Здравствуйте дамы и господа! После трехлетнего перерыва (с 2007 года по настоящее время я был занят в Java-проектах), на старости лет, пришлось влезть во внедрение УПП в нашей конторе... с чем себя и поздравляю !
Итак... ближе к телу. Тема переноса номенклатуры была пережевана много раз. Кто переносит через CD, кто через OLE... кто через различные вспомогательные внешние файлы. Однако, мы пошли другим путем :). На мой взгляд, в данной обработке был достигнут компромисс между тупым поэлементным автоматическим переносом и, соответственно, тупой ручной работой конечных пользователей, ответственных за определенные группы номенклатуры. При составе номенклатурных позиций за 30-50 тысяч элементов, такой подход, реализованный в обработке (работа в одной форме), мне кажется оправданным.
Предварительные условия запуска.
В конфигурации - источнике (Компл,Торг) необходимо ввести два вспомогательных поля неограниченной длины с названиями "СНом" и "СХар". Желательно их оформить не доступными для редактирования конечным пользователям. В эти поля, в момент переноса-привязки, обработкой записываются системные идентификаторы объектов из V8. Т.е идентификаторы позиций номенклатуры и , если необходимо, характеристик. Эта информация понадобится в дальнейшем при переносе партий и т.д.
В восьмерке (8.1) необходимо изменить интервал для обновления индекса полнотекстового поиска. У нас клиент-сервер, и интервал обновления выставлен на 30 сек. При 50 пользователях тормозов не заметили, но по окончании переноса номенклатуры желательно восстановить значения по умолчанию.
Практическая работа
При загрузке обработки выскочит пустое окно разбитое на 2 функциональные части. Вверху иерархия номенклатуры, внизу таблица позиций номенклатуры в конфигурации - источнике. Работу начинаем с выставления параметров. Внизу формы есть кнопка. Назначение полей понятно из их наименований. Параметры автоматически сохраняются и восстанавливаются при каждом сеансе. После заполнения параметров жмем кнопку OLE соединение. Это нужно сделать только один раз при начале работы с обработкой. Если все в порядке , внизу, в статусной строке, выводится состояние OLE соединения. Для корректной работы, OLE должно быть живым на протяжении всего сеанса. После установки соединения жмем кнопку загрузить... и можно выпить кофе или попытаться забить стрелку с секретаршей босса... главное чтобы он не догадался :). После загрузки можно нажать кнопку "Сохранить данные", хотя это не обязательно. Обработка, после завершения сеанса (кнопка "Закрыть"), сама запишет все телодвижения в промежуточный файл и при следующем сеансе все восстановит.
Работа с номенклатурой сводится к 4 типам операций. Привязка групп и привязка элементов. Группы привязываются двойным кликом в поле "Привязка" в Иерархии. Позиции можно обработать с помощью трех кнопок. Реализованы режимы одиночной привязки через полнотекстовый поиск, групповая привязка и сведение множества позиций в одну с характеристиками. На представленных скрин-шотах это видно. Кроме того, в ошибочных ситуациях как на картинке 2, возможна ручная привязка через колонки "Привязка" и "Характеристика". При работе с характеристиками номенклатуры, необходимо заранее определится с их составом и в УПП это дело обозначить (как сделать, см в руководстве пользователя). В дальнейшем, при вызове формы "Сведения в одну позицию", обработка сама определит состав характеристик и динамически расширит табличную часть.
Ну, вроде все... Остальное можно догнать методом "научного" тыка и ковырянием в исходном коде. Код публичный, предоставляется "AS IS" и если в результате работы земля вдруг сойдет со своей орбиты... а я здесь ни при чем :)
Надеюсь это кому-нибудь да понадобится :)
Ваш maxlab.
Дополнения от 09.01.2010
Немного доработал обработочку для корректного переноса остатков. Код конечно не "шедевральный", но работоспособный :)
Чтобы все это хозяйство запустить, нужно сделать небольшое изменение в УПП, согласно этому отчету о конфигурации.
- Конфигурации.УправлениеПроизводственнымПредприятием Имя: "УправлениеПроизводственнымПредприятием" Синоним: "Управление производственным предприятием, редакция 1.2" Комментарий: "" ВариантВстроенногоЯзыка: "Русский" ОсновнойСтиль: "Стиль.Основной" ОсновнойЯзык: "Язык.Русский" ОсновнойИнтерфейс: "Интерфейс.Полный" ОсновнаяРоль: "Роль.ПолныеПрава" КраткаяИнформация: "Управление производственным предприятием, редакция 1.2" ПодробнаяИнформация: "Управление производственным предприятием, редакция 1.2" АвторскиеПрава: "Copyright (С) ЗАО "1C", 2004-2009. Все права защищены" АдресИнформацииОПоставщике: "" АдресИнформацииОКонфигурации: "" Поставщик: "Фирма "1С"" Версия: "1.2.27.1" АдресКаталогаОбновлений: "http://downloads.v8.1c.ru/tmplts/" РежимУправленияБлокировкойДанных: "Автоматический" ВключатьСправкуВСодержание: "Истина" ДополнительныеСловариПолнотекстовогоПоиска: РежимАвтонумерацииОбъектов: "НеОсвобождатьАвтоматически" ОсновнаяФормаКонстант: "ОбщаяФорма.ОсновнаяФормаКонстант" - Документы.Вспомогательный Имя: "Вспомогательный" Синоним: "Вспомогательный" Комментарий: "" Подсистемы: "Конфигурация.УправлениеПроизводственнымПредприятием" Нумератор: "" ТипНомера: "Строка" ДлинаНомера: "9" ПериодичностьНомера: "Непериодический" КонтрольУникальности: "Истина" АвтоНумерация: "Истина" ВводитсяНаОсновании: ВводПоСтроке: "Номер" ОсновнаяФормаОбъекта: "Документ.Вспомогательный.Форма.ФормаДокумента" ОсновнаяФормаСписка: "" ОсновнаяФормаДляВыбора: "" Проведение: "Запретить" ОперативноеПроведение: "Разрешить" УдалениеДвижений: "УдалятьАвтоматически" ЗаполнениеПоследовательностей: "ЗаполнятьАвтоматически" Движения: ВключатьСправкуВСодержание: "Ложь" РежимУправленияБлокировкойДанных: "Автоматический" ПолнотекстовыйПоиск: "Использовать" - Документы.Вспомогательный.Реквизиты.Организация Имя: "Организация" Синоним: "Организация" Комментарий: "(Общ)" Тип: "СправочникСсылка.Организации" Индексирование: "Индексировать" ПолнотекстовыйПоиск: "Использовать" - Документы.Вспомогательный.Реквизиты.ГруппаНоменклатуры Имя: "ГруппаНоменклатуры" Синоним: "Группа номенклатуры" Комментарий: "" Тип: "СправочникСсылка.Номенклатура" Индексирование: "Индексировать" ПолнотекстовыйПоиск: "Использовать" - Документы.Вспомогательный.Формы.ФормаДокумента Имя: "ФормаДокумента" Синоним: "Форма документа" Комментарий: "" ВключатьСправкуВСодержание: "Ложь" - Документы.Вспомогательный.ТабличныеЧасти.ТЧ Имя: "ТЧ" Синоним: "ТЧ" Комментарий: "" - Документы.Вспомогательный.ТабличныеЧасти.ТЧ.Реквизиты.ДокументОприходования Имя: "ДокументОприходования" Синоним: "Документ оприходования" Комментарий: "" Тип: "ДокументСсылка" Индексирование: "НеИндексировать" ПолнотекстовыйПоиск: "Использовать"
Для чего это нужно? А для того, чтобы несколько раз не перезагружать остатки по всем номенклатурных позициям. Идея простая до безобразия. Перенос остатков осуществляется индивидуально по каждой группе товаров, и этой группе в соответствие ставится документ "Вспомогательный" в который, в свою очередь, вкладываются документу "Оприходования товаров" с раскладкой по складам. Т.е, при нахождении-исправлении ошибок в базе источнике, ответственный по группе самостоятельно, не нервируя программистов :) , осуществляет перезагрузку в своей группе. Когда эпопея внедрения восьмерки завершится, этот документ "Вспомогательный" можно будет без страха удалить из конфигурации. Перед использованием этой фичи внимательно ознакомьтесь с комментариями в коде (обработка кнопки Остатки). Вам надо будет кое что подрихтовать для Ваших конкретных условий. Будут вопросы - спрашивайте. Качать версию 2.