Подпишитесь на RSS, чтобы всегда быть в курсе событий.
Рубрики
Популярные статьи
- Не открываются сайты антивирусов drweb.com, kaspersky.ru и esetnod32.ru. Что делать? - 220 599 просмотров
- Обзор спутникового ресивера GS 8300 - 175 756 просмотров
- Что делать если закрыли доступ на одноклассники, вконтакте, маил, аську - 170 994 просмотров
- Монтаж потолка из пластиковых панелей на металлический каркас. - 152 016 просмотров
- Взлом пароля пользователя 1С 8 версии - 137 867 просмотров
- Вирус просит пополнить счет абонента билайн - 121 483 просмотров
- Как самому собрать душевую кабину - 75 411 просмотров
- Как сделать Live CD Dr Web и просканировать компьютер если не загружается Windows из-за вируса - 74 737 просмотров
- Megafon модем HUAWEI Mobile Connect 3G - 72 961 просмотров
- Описание китайского iPhone 3G - 67 276 просмотров
Ошибка регистрации v7plus.dll
Как известно 1С активно использует внешние компоненты, например v7plus.dll, как правило для формирования отчетов и выгрузки данных. И если возникает ошибка: «Ошибка при создании объекта из компоненты v7plus.dll (отсутствует CLSID)«. То это значит, что внешняя компонента v7plus.dll не зарегистрирована в системе. Где взять v7plus.dll v7plus.dll легче всего взять на диске ИТС, причем диск лучше брать [...]
Удалить из базы 1С документы за несколько лет
Часто прочитав статьи по свертке базы 1С людю задают вопрос — а можно ли свернуть базу задним числом, то есть удалить документы давностью несколько лет, оствив один или два последних года. приведу выдержку из переписки по аське по этому поводу. Wiktor-KODINSK (20:13:35 16/07/2009) Не подскажешь как из торговля и склад убрать 2006 и 2007 годы? [...]
Метки
Логистика в 1с
Много организаций при увеличении оборотов сталкиваются с проблемой логистики. В нескольких фирмешках я писал программы для 1С специально для облегчения труда логистов, которые занимаются не только всякой фигней, типа поиска машин, водителей, экспедиторов, но и такими важными делами, как ОПТИМАЛЬНОЕ распределение по машинам, их вывоз и организация доставки товаров до торговых точек клиентов.
Опишу основные моменты работы таких программ.
Итак мы имеем кучу накладных, собранных торговыми представителями за их нелегкий день в полях. Операторы забили или просто обработали, провели эти накладные, можно, так сказать отдавать в наборку и грузить машины. Вот тут то в бой вступает его величество ЛОГИСТ.
Ему надо разобрать кучу накладных, распределить какую накладную в какую машину грузить? чтобы не просто так сжечь казенный бензин. )))
Для облегчения нелегкого труда логиста, как я уже говорил пишем обработки и добавляем необходимые реквизиты непосредственно в конфигурацию 1С.
Итак дополнительные реквизиты и справочники (данные), которые по моему мнению должны быть интересны логисту.
1. Добавляем справочник ВодителиЭкспедиторы — в нем будем хранить ФИО водителей и экспедиторов, чтобы в последующем они печатались на маршрутных листах.
2. Добавляем справочник Автомобили — в последствии заполним его данными по имеющимся в распоряжении логиста автомобилями, такими как Гос Номер, Марка Автомобиля, Грузоподъемность, Объем.
3. Добавляем очень важный справочник Районы (или Направления). Для удобства мы поделим всю территорию, которую обслуживает фирма на районы (или микрорайоны), это нужно будет для того чтобы сгруппировать накладные по признаку «Район», чтобы в определенный район шла одна машина — для экономии времени, топлива и рассудка.)))
4. В справочник Контрагенты (или договора — это зависит от специфики учета организации) вносим дополнительные реквизиты, такие как Адрес Доставки (если он не совпадает с Фактическим Адресом — такое бывает), Район (или Направление) — это для того, чтобы привязать каждую конкретную торговую точку к Району, Разгрузить До и Разгрузить После (здесь будем ставить время желательной разгрузки, когда это удобно клиенту и к которому часу клиент будет ждать машину от нас).
Для облегчения заполнения этих реквизитов я обычно пишу специальную внешнюю обработку, которая ускоряет процесс заполнения.

Внешний вид обработки
5. В документ Реализация (Расходная накладная) добавляем реквизит (обычно флаг) — Самовывоз — нужно для того, чтобы если данная накладная вывозится самовывозом, то не надо чтобы логист ее вообще видел.
6. Ну и наконец создаем сердце нашей логистической программы — документ Маршрутный Лист, который будет привязан к конкретной машине и иметь следующие реквизиты:

Реквизиты документа Маршрутный Лист
- Водитель — собственно водила, который ведет машину
- Экспедитор — ответственный за груз
- Автомобиль — понятно
- Название Маршрута — здесь можно хранить наименование удобное логисту, чаще хранят Район
- Грузоподъемность Маршрута — сколько тонн везет телега )))
- Склад — очень важный реквизит, если фирма имеет несколько складов в разных концах города
Остальные реквизиты шапки пока пропустим — они пригодятся нам позднее, когда мы захотим считать сколько стоит маршоут, сколько денег потратили на бензин, амортизацию, зарплату водителю и экспедитору — если они не фиксированные (многие организации вводят мотивационную систему оплаты труда водителя и экспедитора — в зависимости от вывезенного объема.
Реквизиты табличной части:
- Реализация — собственно документ, который содержится в маршруте
- Упаковок — количество упаковок, которые содержатся в накладной (Реализации)
- Килограмм — масса накладной (Реализации)
- Сумма — сумма накладной (Реализации)
- Мест — количество целых упаковок
- Контрагент — собственно клиент к которому едем
- Договор — договор (некоторые фирмы ведут торговые точки сетей как отдельные договора — это для них)
- Район — район в котором «проживает» Контрагент
- Адрес — адрес доставки
- Срочность доставки — к кому ехать к первому
- Разгрузить ДО, Разгрузить После — для экспедитора, чтобы не перепутал когда к какому клиенту заехать. ))
В живую Маршрутный Лист в 1С выглядит примерно так:

Внешний вид маршрутного листа
Кстати, маршрутный лист имеет много интересных кнопочек, таких как:
Сводная накладная — Выводим печатную форму в которой просуммирован весь товар по всем накладным, входящим в Маршрутный Лист.

Свод по всем товарам
Этот документ отдается непосредственно на склад, и по нему наборщики набирают товар не по каждой конкретно реализации, а скопом — карами загружают машину — существенно ускоряет работу склада.
Реестр — реестр накладных, входящих в маршрутный лист — тут ничего интересного нет.
Маршрутный Лист Экспедитора — Эта бумага отдается экспедитору и по ней он едет в свое путешествие…
Ну и пожалуй самая интересная кнопочка «Комплекты» с галкой «Без просмотра». При нажатии на эту кнопку происходит печать всех необходимых документов (таких как накладная ТОРОГ-12, счетов-фактур, сертификатов и вообще чего угодно) сразу пачкой, т.е. оператору остается только поставить подписи и печати и отдать этот комплект экспедитору — СУЩЕСТВЕННО УСКОРЯЕТ работу оператора.
В принципе все готово для нелегкой работы логиста. Но… Грамотный логист скажет — нафига все это надо — я и так могу распределять накладные в том же Экселе, и будет прав. Поэтому для таких умных мы пишем еще одну внешнюю обработку, которая анализирует все накладные, которые необходимо развести, анализирует имеющиеся в распоряжении логиста автомобили их грузоподъемность и объем, районы, в которые нужно доставить товар и АВТОМАТИЧЕСКИ формирует маршрутные листы. Логисту остается лишь нажать на кнопку, подождать пару секунд и возможно, чтобы не терять тврческой жилки в своей работе внести пару коррективов, учитывая ньюансы, которые возникают постоянно и которые нельзя учесть программно.

Формируем маршрутные листы автоматически
Вот в принципе и все….
В некоторых организациях меня просили еще сделать расчет стоимости рейса — бензин, зарплата экспедитора, водителя и прочую хрень — но это уже мелочевка. )))
Если статейка понравилась — отпиши в камментах))
Будут вопросы — пиши, ящик знаешь. )))
- Внешний вид обработки
- Внешний вид обработки
- Реквизиты документа Маршрутный Лист
- Внешний вид маршрутного листа
- Свод по всем товарам
- Формируем маршрутные листы автоматически
К записи "Логистика в 1с" оставлено 20 коммент.
Оставить комментарий
Приветствую на моем блоге. Надеюсь вы найдете здесь много интересного и полезногоСохраните меня в социальных сервисах
Видео
Комментарии
- Дэна: Я перепробывал все описанные в инете способы удаления подмены сайта однокласников.ю при чем при этом работала...
- Виктор: А разве никто не заметил, что нам Прошивкой 1.1.97 навязано абсурдное, неизменяемое по вертикали,...
- OPS: 1. Реализован новый интерфейс сервиса «Кинозалы «Триколор ТВ». Он предоставляет возможность видеть список всех...
- OPS: Новая версия ПО 0.20.30 для приемников GS83021. Реализован новый интерфейс сервиса «Кинозалы «Триколор ТВ». Он...
- OPS: Новая версия ПО 1.1.97 для приемников GS8300 (M,N) Скачать можно здесь sputnik24.ru/194-pros...
Страницы блога
Статистика
Ссылки
- Блог java программиста
- Здесь можно скачать софт
- Справочник програмиста 1С Выписываю основные приемы программирования






Привет.
Занимаюсь в данное время схожей задачей, пока создал только обработку которая формирует по дате отгрузке всю необходимую информацию по доставке груза.
Хотелось бы узнать как Вы решили эту задачу в конечном варианте.
Ответить
А чем занимается Ваше фирма? Какая информация по доставке груза интересует?
У меня введен отдельный документ — МаршрутныйЛист, который и содержит всю необходимую информацию о доставке конкретного товара на конкретные точки для конкретного водителя/экспедитора, например такую как:
1. Информация об автомобиле, который повезет груз.
2. Объем, вес, количество мест (упаковок) товара.
3. Точки, по которым надо развезти товар (причем можно задать жесткое следование по маршруту)
и др.
Эти самые маршрутные листы формируются с помощью специальной обработки в полуавтоматическом режиме (возможно и в автоматическом, но как правило в 99% случаем в работе логиста появляются нюансы, отследить которые может только человек).
Логист запускает обработку и сразу видит какие накладные надо вывезти, куда вывезти. Далее он задает машины, которые имеются в его распоряжении и программа распределяет эти накладные по рядом стоящим точкам (схожим маршрутам), естественно с учетом веса и объема. Далее логист просто поправляет если необходимо (например когда в 1 район в соответствии с заданным весом идет заполненная машина + машина, которая везет 100 кг (очень мало). Он бежит, договаривается с водителем, чтобы тот взял 100 кг сверх нормы, чтобы не гнать «пустую машину» со 100 кг груза).
Ответить
Наша фирма развозит товар с нашего склада по магазинам
Создана обработка с печатной формой (могу отправить на адрес?)
Модуль в обработке такой
Перем ВысотаЗаголовка;
Перем ИдентификаторОкнаРасшифровки;
Перем ФормаНастройка;
Перем СтруктураРеквизитов;
Перем НеЗаполнятьНастройкиПриОткрытии;
Перем СтруктураСвязиЭлементовСДанными;
Перем ОтборРазвернут;
Перем Менеджеры;
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ
// Управляет пометками кнопок ком. панели
//
// Параметры:
// Нет.
//
Процедура УправлениеПараметрамиОтображенияЭлементовФормы()
Если ПоказыватьЗаголовок Тогда
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Заголовок.Пометка = Истина;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Заголовок.Пометка = Истина;
Иначе
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Заголовок.Пометка = Ложь;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Заголовок.Пометка = Ложь;
КонецЕсли;
Если ОтборРазвернут Тогда
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Отбор.Пометка = Истина;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Отбор.Пометка = Истина;
ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Нет;
Иначе
ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Отбор.Пометка = Ложь;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Отбор.Пометка = Ложь;
КонецЕсли;
КонецПроцедуры // УправлениеПараметрамиОтображенияЭлементовФормы()
// Обновляет таблицу отчета
//
// Параметры:
// Нет.
//
Процедура ОбновитьОтчет() Экспорт
НеЗаполнятьНастройкиПриОткрытии = Не Открыта();
ЭтотОтчет.СформироватьОтчет(ЭлементыФормы.ДокументРезультат, ПоказыватьЗаголовок, ВысотаЗаголовка);
ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ДокументРезультат;
УправлениеПараметрамиОтображенияЭлементовФормы();
КонецПроцедуры // ОбновитьОтчет()
// Управляет выводом заголовка
//
// Параметры:
// Нет.
//
Процедура ВыводЗаголовка()
// Перезаполнять заголовок можно только у «чистого» отчета
Если ЭлементыФормы.ДокументРезультат.ВысотаТаблицы = 0 Тогда
ЭтотОтчет.СформироватьОтчет(ЭлементыФормы.ДокументРезультат, ПоказыватьЗаголовок, ВысотаЗаголовка, Истина);
КонецЕсли;
КонецПроцедуры // ВыводЗаголовка()
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ — ОБРАБОТЧИКИ НАЖАТИЯ КНОПОК КОМАНДНОЙ ПАНЕЛИ
// Процедура — обработчик нажатия кнопки «Настройка».
//
Процедура КоманднаяПанельФормыНастройка(Кнопка)
ФормаНастройка = ЭтотОтчет.ПолучитьФормуНастройки();
ФормаНастройка.ВладелецФормы = ЭтаФорма;
СтруктураСНастройками = ЭтотОтчет.СформироватьСтруктуруДляСохраненияНастроек(ПоказыватьЗаголовок);
СтараяДатаКон = ДатаКон;
СтараяДатаНач = ДатаНач;
РезультатОткрытия = ФормаНастройка.ОткрытьМодально();
Если РезультатОткрытия = Истина Тогда
ОбновитьОтчет();
Иначе
// Форму закрыли эскейпом или по «Закрыть» — восстановим настройки, отчет формировать не будем!
// Восстанавливаем сохраненные значения
ЭтотОтчет.ВосстановитьНастройкиИзСтруктуры(СтруктураСНастройками, ПоказыватьЗаголовок);
ДатаКон = СтараяДатаКон;
ДатаНач = СтараяДатаНач;
КонецЕсли;
КонецПроцедуры
// Процедура — обработчик нажатия кнопки «Отбор».
//
Процедура КоманднаяПанельФормыОтбор(Кнопка)
ОтборРазвернут = НЕ ОтборРазвернут;
УправлениеПараметрамиОтображенияЭлементовФормы();
КонецПроцедуры
// Процедура — обработчик нажатия кнопки «Обновить».
//
Процедура КоманднаяПанельФормыОбновить(Кнопка)
ТабДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ДатаОтгрузки», ЭтотОбъект.ДатаКон);
Запрос.Текст =»
|ВЫБРАТЬ
|ЗаказПокупателя.ДатаОтгрузки,
|ЗаказПокупателя.Контрагент КАК Контрагент,
|ЗаказПокупателя.Номер,
|ЗаказПокупателя.Дата
|{ВЫБРАТЬ
|ДатаОтгрузки,
|Контрагент.*}
|ИЗ
|Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
|ЗаказПокупателя.ДатаОтгрузки = &ДатаОтгрузки
|СГРУППИРОВАТЬ ПО
|ЗаказПокупателя.Контрагент.ГоловнойКонтрагент,
|ЗаказПокупателя.Контрагент,
|ЗаказПокупателя.ДатаОтгрузки,
|ЗаказПокупателя.Номер,
|ЗаказПокупателя.Дата
|УПОРЯДОЧИТЬ ПО
|ЗаказПокупателя.Контрагент.ГоловнойКонтрагент
|»;
ЗапросЗаказы = Запрос.Выполнить().Выгрузить();
Макет = этототчет.ПолучитьМакет(«МаршрутЗаказа»);
ОбластьЗаголовка = Макет.ПолучитьОбласть(«Заголовок»);
текст = «Маршрутный лист на «+строка(формат(ЭтотОбъект.ДатаКон,»ДФ=»"дд.ММ.гггг»"»));
ОбластьЗаголовка.Параметры.ТекстЗаголовка = текст;
ТабДокумент.Вывести(ОбластьЗаголовка);
ОбластьШапки = Макет.ПолучитьОбласть(«ШапкаТаблицы»);
ТабДокумент.Вывести(ОбластьШапки);
ОбластьГолКонтр = Макет.ПолучитьОбласть(«ГоловКонтр»);
ОбластьНомера = Макет.ПолучитьОбласть(«Строка|НомерСтроки»);
ОбластьДанных = Макет.ПолучитьОбласть(«Строка|Данные»);
ОбластьВеса = Макет.ПолучитьОбласть(«Строка|вес»);
ОбластьАдреса = Макет.ПолучитьОбласть(«Строка|АдресДоставки»);
ОбластьВодитель = Макет.ПолучитьОбласть(«Строка|Водитель»);
НумераторСтрок = 0;
головКонтрТекущий = «»;
головКонтрСлед = «»;
Для каждого ВыборкаСтрокЗаказы Из ЗапросЗаказы Цикл
//————————————————
ВыбранныйЗаказ = ВыборкаСтрокЗаказы.номер;
ТекстЗапроса=»";
ЭтоЧисло = Истина;
Попытка
НомерКакЧисло = Число(ВыбранныйЗаказ);
Исключение
ЭтоЧисло = Ложь;
КонецПопытки;
ИмяДока=»ЗаказПокупателя»;
МетаданныеДокумента = Метаданные.Документы[ИмяДока];
Если МетаданныеДокумента.ТипНомера=Метаданные.СвойстваОбъектов.ТипНомераДокумента.Число Тогда
Если Не ЭтоЧисло Тогда
Продолжить;
КонецЕсли;
ИскомыйНомер = НомерКакЧисло;
Иначе
ИскомыйНомер = «»"»+ВыбранныйЗаказ+»"»";
КонецЕсли;
ТекстЗапроса=ТекстЗапроса+»
|Выбрать «+?(ТекстЗапроса=»", «РАЗРЕШЕННЫЕ «, «»)+»Дата, Ссылка Из Документ.»+ИмяДока+» Как Док
|ГДЕ «;
ТекстЗапроса=ТекстЗапроса+» (Дата>=&НачалоИнтервала) И (Дата<=&КонецИнтервала) И «;
ТекстЗапроса=ТекстЗапроса+»
|Док.Номер=»+ИскомыйНомер+»
|UNION»;
Если ПустаяСтрока(ТекстЗапроса) Тогда
Возврат;
КонецЕсли;
ТекстЗапроса=(Лев(ТекстЗапроса, СтрДлина(ТекстЗапроса)-СтрДлина(«UNION»)));
ТекстЗапроса=ТекстЗапроса+»
|УПОРЯДОЧИТЬ ПО Дата»;
Запрос=Новый Запрос;
Запрос.Текст=ТекстЗапроса;
Запрос.УстановитьПараметр(«НачалоИнтервала», НачалоДня(Дата(2008,01,01)));
Запрос.УстановитьПараметр(«КонецИнтервала», КонецДня(ТекущаяДата()));
докум = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(1)[0];
//————————————-
//sam———————————— головной контрагент
если докум.пометкаудаления = истина тогда
продолжить;
конецесли;
головКонтрТекущий = докум.контрагент.ГоловнойКонтрагент;
если головКонтрТекущий головКонтрСлед тогда
ОбластьГолКонтр.Параметры.Головнойконтрагент = головКонтрТекущий;
ТабДокумент.Присоединить(ОбластьГолКонтр);
головКонтрСлед = головКонтрТекущий;
конецесли;
//
//sam——————————-
НумераторСтрок = НумераторСтрок + 1;
ОбластьНомера.Параметры.НомерСтроки = НумераторСтрок;
ТабДокумент.Вывести(ОбластьНомера);
ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокЗаказы);
ОбластьДанных.Параметры.ДатаОтгрузки = Формат(ВыборкаСтрокЗаказы.ДатаОтгрузки,»ДФ=»"дд.ММ.гггг»"») + докум.ВремяОтгрузки;
ОбластьДанных.Параметры.контрагент = СокрП(ВыборкаСтрокЗаказы.Контрагент);
ТабДокумент.Присоединить(ОбластьДанных);
//=======================
Вес = 0;
для НомерТовара = 0 по (докум.товары.количество()-1) цикл
Вес = вес + (докум.товары[НомерТовара].количество*докум.товары[НомерТовара].Коэффициент); //умножить на коэф
конеццикла;
ОбластьВеса.Параметры.Вес = строка(Вес);
ТабДокумент.Присоединить(ОбластьВеса);
АдресДоставки = докум.АдресДоставки;
ОбластьАдреса.Параметры.АдресДоставки = АдресДоставки;
ТабДокумент.Присоединить(ОбластьАдреса);
ТабДокумент.Присоединить(ОбластьВодитель);
конеццикла;
ОбластьПодписи = Макет.ПолучитьОбласть(«ПодвалЗаказа»);
ТабДокумент.Вывести(ОбластьПодписи);
НапечататьДокумент(ТабДокумент, 1, ложь, «Маршрутный лист на «+строка(ЭтотОбъект.ДатаКон));
КонецПроцедуры // ВыполнитьНажатие()
// Выводит на печать подготовленный макет
//
// Параметры:
// ПечДокумент — ТабличыйДокумент, макет на печать,
// КоличествоЭкземпляров — Число, количество экземпляров на печать,
// НаПринтер — Булево, Если истина, то выводим сразу на принтер.
// Заголовок — Заголовок окна табличного документа
//
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = «») Экспорт
Если ПечДокумент = Неопределено тогда
Возврат;
КонецЕсли;
// Получить необходимое количество копий
Если КоличествоЭкземпляров < 1 Тогда
ПечДокумент.КоличествоЭкземпляров = 1;
Иначе
ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
КонецЕсли;
Если НЕ ПечДокумент.АвтоМасштаб
И ЗначениеНеЗаполнено(ПечДокумент.ИмяПринтера) Тогда
ПечДокумент.АвтоМасштаб = Истина;
КонецЕсли;
Если НаПринтер Тогда
ПечДокумент.Напечатать();
Иначе
ПечДокумент.ОтображатьЗаголовки = Ложь;
ПечДокумент.ОтображатьСетку = Ложь;
ПечДокумент.ТолькоПросмотр = Истина;
ПечДокумент.Показать(Заголовок);
КонецЕсли;
КонецПроцедуры // НапечататьДокумент()
// Определяет заполнено ли переданное значение
//
// Параметры:
// Значение — значение, заполенение которого надо проверить
//
// Возвращаемое значение:
// Истина — значение не заполнено, ложь — иначе.
//
Функция ЗначениеНеЗаполнено(Значение)
Результат = Ложь;
ТипЗначения = ТипЗнч(Значение);
// Сначала примитивные типы
Если Значение = Неопределено Тогда
Результат = Истина;
ИначеЕсли Значение = NULL Тогда
Результат = Истина;
ИначеЕсли ТипЗначения = Тип(«Строка») Тогда
Если СокрЛП(Значение) = «» Тогда
Результат = Истина;
КонецЕсли;
ИначеЕсли ТипЗначения = Тип(«Число») Тогда
Если Значение = 0 Тогда
Результат = Истина;
КонецЕсли;
ИначеЕсли ТипЗначения = Тип(«Дата») Тогда
Если Значение = Дата(’00010101′) Тогда
Результат = Истина;
КонецЕсли;
ИначеЕсли ТипЗначения = Тип(«Булево») Тогда
Результат = Ложь; // Булево будем считать не пустым
//Отдельное определение, так как конструкторов данного типа не существует
ИначеЕсли ТипЗначения = Тип(«РежимПроведенияДокумента») Тогда
Если Значение = РежимПроведенияДокумента.Неоперативный или Значение = РежимПроведенияДокумента.Оперативный тогда
Результат = Ложь;
КонецЕсли;
// Для остальных будем считать значение пустым, если оно равно
// дефолтному значению своего типа
Иначе
Попытка
Если Значение = Новый(ТипЗначения) Тогда
Результат = Истина;
КонецЕсли;
Исключение
Результат = Ложь;
КонецПопытки;
КонецЕсли;
Возврат Результат;
КонецФункции // ЗначениеНеЗаполнено()
// Процедура — обработчик нажатия кнопки «Заголовок».
//
Процедура КоманднаяПанельФормыЗаголовок(Кнопка)
ПоказыватьЗаголовок = Не ПоказыватьЗаголовок;
ВыводЗаголовка();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ — ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ // Процедура — обработчик события после восстановления значений формы
//
Процедура ПослеВосстановленияЗначений()
// Если настройка восстанавливается, когда открывается форма сформровенного отчета, игнорируем
Если НеЗаполнятьНастройкиПриОткрытии Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(СохраненныеНастройки) = Тип(«Структура») Тогда
ЭтотОтчет.ВосстановитьНастройкиИзСтруктуры(СохраненныеНастройки, ПоказыватьЗаголовок);
// Очистим результат — он более не соответствует настройке
ЭлементыФормы.ДокументРезультат.Очистить();
ВысотаЗаголовка=0;
ВыводЗаголовка();
КонецЕсли;
КонецПроцедуры // ПослеВосстановленияЗначений()
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ — ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ
// Процедура — обработчик события «Обработка расшифровки» поля табличного документа ДокументРезультат
//
Процедура ДокументРезультатОбработкаРасшифровки(Элемент, РасшифровкаСтроки, СтандартнаяОбработка)
Если ТипЗнч(РасшифровкаСтроки) = Тип(«Структура») Тогда
// Расшифровка колонки находится в заголовке колонки
РасшифровкаКолонки = Элемент.Область(ВысотаЗаголовка+2, Элемент.ТекущаяОбласть.Лево).Расшифровка;
Расшифровка = Новый Структура;
Для каждого Элемент Из РасшифровкаСтроки Цикл
Расшифровка.Вставить(Элемент.Ключ, Элемент.Значение);
КонецЦикла;
Если ТипЗнч(РасшифровкаКолонки) = Тип(«Структура») Тогда
Для каждого Элемент Из РасшифровкаКолонки Цикл
Расшифровка.Вставить(Элемент.Ключ, Элемент.Значение);
КонецЦикла;
КонецЕсли;
ОбработкаРасшифровкиСтандартногоОтчета(Расшифровка, СтандартнаяОбработка, ЭтотОтчет);
КонецЕсли;
КонецПроцедуры // ДокументРезультатОбработкаРасшифровки()
// Процедура — орбаротчик события при закрытии
//
Процедура ПриЗакрытии()
//может чего надо
КонецПроцедуры
// При инициализации формы необходимо заполнить реквизиты и поля основного реквизита формы
ЗаполнитьПоляОсновногоРеквизита(ЭтотОтчет.ОбщийОтчет);
НеЗаполнятьНастройкиПриОткрытии = Ложь;
ОтборРазвернут = Ложь;
Ответить
Присылай конечно piterpen323@mail.ru
Ответить
Автор статьи вышли пожалуйста.
Аркадий буду рад если поделишься.
Ответить
у меня не просто обработка — у меня целый логистический модуль в базе ведется, с дополнительными справочниками, документами, обработками и отчетами. тебе вместе с MD?? )))
Ответить
а можно у Dас этот комплекс попросить? мой адрес berezniki@gmail.com
Ответить
Он идет как не отдельная программа, а встроен в конфигурацию, поэтому я лишь описал принцип создания, не выкладывая структуру. Попробуй сам написать (мне кажется так будет проще), будут вопросы — пиши…
Ответить
Тут вот в чём вопрос, я не кодер. Поэтому можно поставить вопрос по другому, сколько будет стоить встроить этот весь в функционал в мою конфигурацию? (1с77:комплексная).
Ответить
Если функционал сделать точно такой же как и в описании, то встроить в комплексную или торговлю будет стоить в районе 10 тыс рублей. Плюс если разработка проводится удаленно, то накинь еще 2-3 тысячи для написания инструкций для пользователей.
Ответить
Аркадий, не моли бы вы поделиться обработкой, код которой здесь представлен
Ответить
Интересная статья, у нас практически также все реализованно
Ответить
Добрый день!
Если у Вас есть данная обработка для 8.1 1-с не могли бы вы поделиться этим волшебством.
Заранее Вам благодарна.
Ответить
Маршрутный лист — это не обработка)))
Это документ в данном случае)))
Ответить
Есть ли у вас такая обработка для 1с 8.1?
Ответить
Ну говорю же, что это не обработка — это целый комплекс, который затрагивает конфигурацию.
Если есть желание — напишу под Вас конкретно на любой платформе за скромное вознаграждение..
Ответить
Кстати, вполне реально написать отдельную конфигурцию, которая будет подключаться к торговой базе и вытаскивать оттуда всю необходимую для логиста информацию, обрабатывать ее и выдавать все необходимые маршруты, печатные формы и пр.
Это позволит не вносить изменений в основную конфигурацию 1С
Ответить
Единственная проблема — это контроль контрагентов, а вернее район в котором находится контрагент
Ответить
Работаю с базой 1с …создаю заказ… путевой лист…..клиент отказ…есть ли возможность убить этот заказ..а то приходиться в ручную убивать его…подскажите как по шагово отменить заказ…
Ответить
Это на какой интересно конфигурации Вы работаете? Что такое заказ в Вашей конфигурации?
Ответить