Методика упрощения поддержки конфигураций. Переопределение и вызов обработчиков событий для УФ 1С 8.2-8.3
Администрирование - Производительность и оптимизация (HighLoad)
Этот метод появился на свет благодаря публикации //develop.iservice.ru/public/16980/ и внедрения конфигурации «Управление торговлей, редакция 11» в не российской торговой компании, из чего следует, что переписано и изменено было очень многое. С выходом каждого нового обновления, для внесения этих изменений, уходило все больше времени и на пике достигало уже до месяца и выливалось в огромные затраты. Так же при выявлении ошибок их нужно было исправлять оперативно и быстро, что со 100-150 одновременно работающими пользователями составляло огромную проблему.
1. Нужно создать общий модуль МодульПереназначенияОбработчиков, вот такой он у меня:
// Общая процедура перед переназначения обработчиков
//
// Параметры:
// УправляемаяФорма – УправляемаяФорма – Управляемая форма.
//
Процедура ПереназначитьОбработчики(УправляемаяФорма) Экспорт
Если ТипЗнч(УправляемаяФорма) = Тип("УправляемаяФорма") Тогда
ОбщаяВнешняяОбработка = ПолучитьВнешнийОбъект("Библиотека внешних обработок");
ВнешняяОбработкаСерийныеНомера = ПолучитьВнешнийОбъект("Серийные номера");
ИмяВнешнейОбработкиСерийныеНомера = ПолучитьИмяВнешнегоОбъекта("Серийные номера");
ВнешняяОбработкаСерийныеНомера.ПодготовитьСерийныеНомераКРаботе(УправляемаяФорма, ОбщаяВнешняяОбработка, ИмяВнешнейОбработкиСерийныеНомера);
ОбщаяВнешняяОбработка.ПодменитьДействиеУправляемоеПриложение(УправляемаяФорма, "ПриЗакрытии", , "ВыполнитьОткатОбработчиков");
//Пример как можно изменить свойства управляемой формы
УправляемаяФорма.ПоведениеКлавишиEnter = ТипПоведенияКлавишиEnter.ПереходПоЭлементамФормы;
КонецЕсли;
КонецПроцедуры
// Получаем внешнюю обработку или внешний отчет.
//
// Параметры:
// ИмяВнешнегоОбъекта – Строка - имя внешнего объекта;
// ЭтоОтчет – Булево – Ложь (Внешняя обработка), Истина (Внешний отчет).
//
// Возвращаемое значение:
// – ВнешняяОбработка или ВнешнийОтчет
//
Функция ПолучитьВнешнийОбъект(ИмяВнешнегоОбъекта, ЭтоОтчет = Ложь) Экспорт
Ссылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяВнешнегоОбъекта);
Если Ссылка = Неопределено Тогда
ВызватьИсключение "Внешний объект с именем не найден: " + ИмяВнешнегоОбъекта;
КонецЕсли;
ДвоичныеДанные = Ссылка.ХранилищеОбработки.Получить();
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ИмяВнОбработки = ?(ЭтоОтчет, ВнешниеОтчеты, ВнешниеОбработки).Подключить(АдресХранилища, , Ложь);
ОбработкаОбъект = ?(ЭтоОтчет, ВнешниеОтчеты, ВнешниеОбработки).Создать(ИмяВнОбработки);
Возврат ОбработкаОбъект;
КонецФункции
// Получаем имя внешней обработки или внешнего отчета.
//
// Параметры:
// ИмяВнешнегоОбъекта – Строка - имя внешнего объекта;
// ЭтоОтчет – Булево – Ложь (Внешняя обработка), Истина (Внешний отчет).
//
// Возвращаемое значение:
// – Строка - Имя внешней обработки или отчета.
//
Функция ПолучитьИмяВнешнегоОбъекта(ИмяВнешнегоОбъекта, ЭтоОтчет = Ложь) Экспорт
Ссылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяВнешнегоОбъекта);
Если Ссылка = Неопределено Тогда
ВызватьИсключение "Внешний объект с именем не найден: " + ИмяВнешнегоОбъекта;
КонецЕсли;
ДвоичныеДанные = Ссылка.ХранилищеОбработки.Получить();
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Возврат ?(ЭтоОтчет, ВнешниеОтчеты, ВнешниеОбработки).Подключить(АдресХранилища, , Ложь);
КонецФункции
// Получаем ссылку на элемент справочника ДополнительныеОтчетыИОбработки.
//
// Параметры:
// ИмяВнешнегоОбъекта – Строка - имя внешнего объекта;
//
//
// Возвращаемое значение:
// – СправочникСсылка.ДополнительныеОтчетыИОбработки - ссылка на элемент справочника ДополнительныеОтчетыИОбработки.
//
Функция ПолучитьСсылкуНаВнешнийОбъект(ИмяВнешнегоОбъекта) Экспорт
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяВнешнегоОбъекта);
КонецФункции
2. Далее, нужно загрузить общую внешнюю обработку в режиме предприятия. Код обработки:
// Функция добавляет элемент в коллекцию элементов формы и возращает его.
//
// Параметры:
// ЭлементыФормы – ВсеЭлементыФормы – Содержит коллекцию всех элементов управляемой формы;
// Параметры – Структура – параметры добавляемого элемента;
// Родитель – ГруппаФормы, ТаблицаФормы, УправляемаяФорма – родитель добавляемого элемента.
//
// Возвращаемое значение:
// – ДекорацияФормы, ГруппаФормы, КнопкаФормы, ТаблицаФормы, ПолеФормы – элемент управляемой формы.
//
Функция ДобавитьЭлементВКоллекциюЭлементовФормы(ЭлементыФормы, Параметры, Родитель = Неопределено) Экспорт
Перем ИмяЭлемента, ТипЭлемента;
Если НЕ ТипЗнч(Параметры) = Тип("Структура") Тогда
ВызватьИсключение "Параметры элемента формы не заданы!";
КонецЕсли;
Если НЕ Параметры.Свойство("Имя", ИмяЭлемента) Тогда
ВызватьИсключение "Имя элемента формы не задано!";
КонецЕсли;
Если НЕ Параметры.Свойство("ТипЭлемента", ТипЭлемента) Тогда
ВызватьИсключение "Тип элемента формы не задан!";
КонецЕсли;
Если НЕ Родитель = Неопределено Тогда
Если ТипЗнч(Родитель) <> Тип("ГруппаФормы")
И ТипЗнч(Родитель) <> Тип("ТаблицаФормы")
И ТипЗнч(Родитель) <> Тип("УправляемаяФорма") Тогда
ВызватьИсключение "Родитель должен иметь один из перечисленных типов: ГруппаФормы; ТаблицаФормы; УправляемаяФорма.";
КонецЕсли;
КонецЕсли;
ЭлементФормы = ЭлементыФормы.Добавить(ИмяЭлемента, ТипЭлемента, Родитель);
ЗаполнитьЗначенияСвойств(ЭлементФормы, Параметры);
Возврат ЭлементФормы;
КонецФункции
// Функция добавляет команду в коллекцию команд формы и возращает его.
//
// Параметры:
// Команды – КомандыФормы – Содержит коллекцию всех элементов управляемой формы;
// Параметры – Структура – параметры добавляемой команды.
//
// Возвращаемое значение:
// – КомандаФормы – команда управляемой формы.
//
Функция ДобавитьКомандуВКоллекциюКомандФормы(Команды, Параметры) Экспорт
Перем ИмяЭлемента;
Если НЕ ТипЗнч(Параметры) = Тип("Структура") Тогда
ВызватьИсключение "Параметры команды не заданы!";
КонецЕсли;
Если НЕ Параметры.Свойство("Имя", ИмяЭлемента) Тогда
ВызватьИсключение "Имя команды не задано!";
КонецЕсли;
Команда = Команды.Добавить(ИмяЭлемента);
ЗаполнитьЗначенияСвойств(Команда, Параметры);
Возврат Команда;
КонецФункции
Процедура ПереместитьЭлементВКоллекциюЭлементовФормы(ЭлементыФормы, ИмяЭлемента, ИмяРодителя, МестоРасположения) Экспорт
ЭлементыФормы.Переместить(ЭлементыФормы.Найти(ИмяЭлемента), ЭлементыФормы.Найти(ИмяРодителя), ЭлементыФормы.Найти(МестоРасположения));
КонецПроцедуры
// Переопределяет обработчик события формы.
// Сохраняет штатный обработчик события внутри формы и устанавливает новый.
//
// Параметры:
// Форма – УправляемаяФорма – Управляемая форма;
// ИмяСобытияФормы – Строка – имя события;
// ПолноеИмяЭлементаФормы – Строка – полное имя элемента формы;
// НовоеДействие - Строка - имя процедуры обработчика;
// ОбработкаИсключений – Булево – сообщать о наличии старого обработчика.
//
Процедура ПодменитьДействиеУправляемоеПриложение(Форма, ИмяСобытияФормы = "", ПолноеИмяЭлементаФормы = "", НовоеДействие, ОбработкаИсключений = Ложь) Экспорт
Объект = Форма;
ИмяЭлементаФормы = "";
Если НЕ ПустаяСтрока(ПолноеИмяЭлементаФормы) Тогда
МассивФрагментов = РазобратьСтрокуВМассивПоРазделителю(ПолноеИмяЭлементаФормы);
ИмяЭлементаФормы = МассивФрагментов[0];
Объект = Форма.Элементы.Найти(ИмяЭлементаФормы);
Если Объект = Неопределено Тогда
ВызватьИсключение "Элемент формы: " + ИмяЭлементаФормы + " не найден!";
КонецЕсли;
Если МассивФрагментов.Количество() > 1 Тогда
ИмяЭлементаФормы = ИмяЭлементаФормы + МассивФрагментов[1];
Если ТипЗнч(Объект) = Тип("ТаблицаФормы") Тогда
Объект = Объект.Колонки[МассивФрагментов[1]].ЭлементУправления;
ИначеЕсли ТипЗнч(Объект) = Тип("КоманднаяПанель") Тогда
Объект = Объект.Кнопки[МассивФрагментов[1]];
Иначе
ВызватьИсключение "Ошибка на этапе получения элемента формы. Тип значения(" + ТипЗнч(Объект) + ")";
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтарыеОбработчики = "OldHandlers";
МассивРеквизитов = Форма.ПолучитьРеквизиты();
Для Каждого РеквизитФормы Из МассивРеквизитов Цикл
Если РеквизитФормы.Имя = СтарыеОбработчики Тогда
СтарыеОбработчики = Неопределено;
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ СтарыеОбработчики = Неопределено Тогда
МассивНовыхРеквизитов = Новый Массив;
МассивНовыхРеквизитов.Добавить(Новый РеквизитФормы(СтарыеОбработчики, Новый ОписаниеТипов("СписокЗначений")));
Форма.ИзменитьРеквизиты(МассивНовыхРеквизитов);
КонецЕсли;
Если ТипЗнч(Объект) = Тип("КнопкаФормы") Тогда
СтароеДействие = Объект.ИмяКоманды;
Иначе
СтароеДействие = Объект.ПолучитьДействие(ИмяСобытияФормы);
КонецЕсли;
Если ОбработкаИсключений И НЕ СтароеДействие = Неопределено Тогда
ВызватьИсключение "Конфликт обработчиков события """ + ИмяСобытияФормы + """ объекта """ + Строка(Объект) + """";
КонецЕсли;
Если ТипЗнч(Объект) = Тип("КнопкаФормы") Тогда
Объект.ИмяКоманды = НовоеДействие;
Иначе
Объект.УстановитьДействие(ИмяСобытияФормы, НовоеДействие);
КонецЕсли;
OldHandlers = Форма.OldHandlers;
Если НЕ СтароеДействие = Неопределено И НЕ ПустаяСтрока(СтароеДействие) Тогда
OldHandlers.Добавить(ИмяЭлементаФормы + "." + ИмяСобытияФормы, СтароеДействие);
КонецЕсли;
КонецПроцедуры
// Возвращает старый обработчик события формы.
//
// Параметры:
// Форма – УправляемаяФорма – Управляемая форма;
// ИмяСобытияФормы – Строка – имя события;
// ПолноеИмяЭлементаФормы – Строка – полное имя элемента формы;
// СтароеДействие - Строка - имя процедуры обработчика.
//
Процедура ОткатитьДействиеУправляемоеПриложение(Форма, ИмяСобытияФормы = "", ПолноеИмяЭлементаФормы = "", СтароеДействие) Экспорт
Объект = Форма;
ИмяЭлементаФормы = "";
Если НЕ ПустаяСтрока(ПолноеИмяЭлементаФормы) Тогда
МассивФрагментов = РазобратьСтрокуВМассивПоРазделителю(ПолноеИмяЭлементаФормы);
ИмяЭлементаФормы = МассивФрагментов[0];
Объект = Форма.Элементы.Найти(ИмяЭлементаФормы);
Если Объект = Неопределено Тогда
ВызватьИсключение "Элемент формы: " + ИмяЭлементаФормы + " не найден!";
КонецЕсли;
Если МассивФрагментов.Количество() > 1 Тогда
ИмяЭлементаФормы = ИмяЭлементаФормы + МассивФрагментов[1];
Если ТипЗнч(Объект) = Тип("ТаблицаФормы") Тогда
Объект = Объект.Колонки[МассивФрагментов[1]].ЭлементУправления;
ИначеЕсли ТипЗнч(Объект) = Тип("КоманднаяПанель") Тогда
Объект = Объект.Кнопки[МассивФрагментов[1]];
Иначе
ВызватьИсключение "Ошибка на этапе получения элемента формы. Тип значения(" + ТипЗнч(Объект) + ")";
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ТипЗнч(Объект) = Тип("КнопкаФормы") Тогда
Объект.ИмяКоманды = СтароеДействие;
Иначе
Объект.УстановитьДействие(ИмяСобытияФормы, СтароеДействие);
КонецЕсли;
КонецПроцедуры
// Возвращает старые обработчики событий формы.
// Сохраняет штатный обработчик события внутри формы и устанавливает новый.
//
// Параметры:
// Форма – УправляемаяФорма – Управляемая форма.
//
Процедура ВыполнитьОткатОбработчиков(Форма) Экспорт
Для Каждого Обработчик Из Форма.OldHandlers Цикл
Строка = Обработчик.Значение;
ИндексТочки = Найти(Строка, ".");
ОткатитьДействиеУправляемоеПриложение(Форма, Прав(Строка, СтрДлина(Строка)-ИндексТочки), Лев(Строка, ИндексТочки-1), Обработчик.Представление);
КонецЦикла;
КонецПроцедуры
// Функция разбивает строку разделителем.
//
// Параметры:
// Строка - Строка - которую разбиваем;
// Разделитель - Строка - символ-разделитель.
//
// Возвращаемое значение:
// - Массив - содержащий фрагменты, на которые разбивает строку разделитель.
//
Функция РазобратьСтрокуВМассивПоРазделителю(Строка, Разделитель = ".") Экспорт
МассивСтрок = Новый Массив;
СтрокаЗамены = СтрЗаменить(Строка, Разделитель, Символы.ПС);
Для i=1 По СтрЧислоСтрок(СтрокаЗамены) Цикл МассивСтрок.Добавить(СтрПолучитьСтроку(СтрокаЗамены, i)); КонецЦикла;
Возврат МассивСтрок;
КонецФункции
На данном этапе, все уже готово для использования. Вот видео-пример использования механизма.
Статья в нашем блоге: www.avtomat.biz
UPDATE (24.03.2014):
Изменена схема работы метода, проведена оптимизация и исправлены некоторые недочеты. Все это можно посмотреть в новом архиве к статье. Так же сама статья расширена.
ОТВЕТЫ НА ВОПРОСЫ:
- Для каких конфигураций подходит данный модуль? – механизм предназначен для работы с 1С Предприятие 8.2-8.3, основной режим запуска: "Управляемое приложение", так же конфигурация должна использовать "Библиотеку стандартных подсистем" (БСП), в противном случае нужно будет создать справочник "ДополнительныеОтчетыИОбработки" аналогичный как в БСП;
- Какие изменения нужно внести в конфигурацию? – нужно добавить в конфигурацию несколько общих модулей, а так же внести изменения в необходимую управляемую форму (УФ) в конце модуля и для подмены событий этой формы в обработчики ПриСозданииНаСервере() или ПриЧтенииНаСервере(). Реквизиты и табличные части документов можно добавлять, если вам нужно хранить учетные данные;
- Как влияет на "быстродействие" использование внешних обработок? – когда используется одна внешняя обработка ничего не заметно для конечного пользователя, когда парк обработок увеличивается скорость запуска формы увеличивается в среднем на ~0.3с с каждой новой обработкой. Не надо паниковать – проблема уже решена;
- Как можно вызвать старый обработчик события? – вызвать процедуру ВыполнитьДействиеПоУмолчанию() в которую передать имя события и массив параметров;
- Как методика упрощает обновление конфигурации? – после обновления достаточно перенести обработчики переопределения в обновленную конфигурацию и даже если появились новые штатные обработчики событий они будут работать верно в повальном количестве случаев. Управляемые формы не нужно изменять вручную - это все можно сделать с помощью этой методики програмно;
- Методика увеличивает время разработки? – да увеличивает время разработки. Если уже несколько форм переделано этим методом – тогда затраты времени ростут незначительно, а затраты на обновление конфигурации уменьшается очень существенно;
- Есть критическая ошибка, но пользователей нельзя отключать от базы, что делать? - достаточно внести измения во внешную обработку, изменить ее версию и подключить к базе. После этого, пользователи автоматически уже будут использовать исправленную версию обработки. А ночью обновить общий модуль, который связан с внешней обработкой для более комфортного использования конфигурации.
КЛЮЧЕВЫЕ ИЗМЕНЕНИЯ:
- У всех общих модулей снято свойство "Вызов сервера", теперь вызов из модуля формы выполняется вот так: &НаКлиенте -> &НаСервере -> ОбщийМодульСервер;
- Для сокращения запуска и вызова внешних обработчиков событий, код доработок дублируется в общих модулях. При запуске проверяется версия общего модуля с версией внешней обработки из справочника "ДополнительныеОтчетыИОбработки". Если версии совпадают УФ будет работать с контекстом общего модуля, если версии отличаются вызов процедур и функций будет осуществляется из внешнего объекта;
- Переработана работа с контекстом &НаКлиенте – код из форм внешнего объекта дублируется в общем клиентском модуле;
- Сам метод переопределения обработчиков событий оформлен так же как внешняя обработка, что добавляет некоторую дополнительную гибкость;
- Проверка на дополнительный вызов переназначения обработчиков.
ТАК КАК ЖЕ ЭТО РАБОТАЕТ:
- Пользователь открывает документ происходит вызов ПриСозданииНаСервере() или ПриЧтенииНаСервере(). В одну или в обе процедуры мы добавляем наш вызов git_ПереопределениеОбработчиковСервер.ПереопределитьОбработчикиСобытий(ЭтаФорма). Как понять куда добавлять? – нужно посмотреть есть ли переопределение обработчиков в стандартной конфигурации (в УТ 11 оно есть), и добавить перед этим переопределением свой вызов;
- Далее идет переход в общий модуль "git_ПереопределениеОбработчиковСервер" в котором определяется первый ли это вызов (на случай, если добавили обработчики в ПриСозданииНаСервере() или ПриЧтенииНаСервере());
- Идет проверка версии модуля с версией внешней обработки, если версии одинаковые будет использоваться общий модуль git_ПереопределениеОбработчиковСервер, если версии различные будет использоваться внешняя обработка;
- Далее идет такая же проверка для каждой подключаемой внешней обработки (код можно посмотреть в файле .cf) и внутри каждой подключаемой обработки или общего модуля проверяется путь к механизму переопределения для вызова функций и процедур (общий модуль переопределения или модуль внешней обработки, служебные процедуры и функции обозначены комментарием // Только для внутреннего использования);
- Ура! Форма пользовательского документа открылась, теперь так же необходимые функции запускаются из общего модуля (клиент, сервер) или из модуля\формы внешней обработки;
- Вызов обработчиков по умолчанию исполняеться с помощь вызова процедуры ВыполнитьДействиеПоУмолчанию();
- После закрытия формы все обработчики будут восстанавливаться для избежания проблем с кешированием форм.
Статья в нашем блоге (часть 2): www.avtomat.biz
Специальные предложения
См. также
Еще один тест 1C: Postgres SQL 11 Pro Enterpise против MSSQL 14 под Windows 2012 Server R2 14
1 стартмани
05.09.2019 5984 9 ogidni 84
Cashback 35% при покупке 1С лицензий на счет INFOSTART.RU с 27.11 по 04.12 Промо
Оформляете заказ на 1С лицензии или конфигурации. Получаете 35% от стоимости на счет в профиле INFOSTART.RU. Выбираете сервисы и продукты на сумму кэшбэка.
Перенос данных УПП 1.3 => ERP 2 (ЕРП) / УТ 11 / КА 2.х (обработка переноса документов, остатков и справочников из "1С:Управление производственным предприятием, ред. 1.3" в ERP / УТ 11 / КА 2). Обновлен до УПП 1.3.127.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Обработка позволяет переносить из УПП 1.3 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления при выходе новых релизов конфигураций 1С.
29700 руб.
Вакансия Автор новостных обзоров на тему 1С и бухучета, По совместительству Промо
Редакция Infostart.ru будет рада сотрудничеству с 1С-специалистом, умеющим и любящим излагать свои мысли в письменной форме. Если вы работали в IT-изданиях или имеете опыт ведения технологического блога/канала/группы, если сможете сделать обзор обработок из каталога infostart.ru/public/all/, то у вас большое преимущество.
Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!
29700 руб.
HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX 172
1 стартмани
29.01.2019 15532 66 Synoecium 37
Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо
Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Предоставляем техподдержку по всем вопросам данного обмена. Можем подключиться к вам удаленно для разбора ситуаций. Оперативно обновляем при выходе новых релизов 1С. Бесплатные обновления в течение полугода.
19700 руб.
Мониторинг показателей систем 1С 8.3 с помощью Zabbix 163
1 стартмани
05.10.2018 23229 37 akimych 48
Онлайн-интенсив "Бизнес-процессы для подготовки к экзамену 1С:Специалист по платформе" 12 декабря 2019 г. Промо
На интенсиве будут рассмотрены все теоретические вопросы, связанные с устройством механизма бизнес-процессов – это необходимо для успешной сдачи экзамена 1С:Специалист по платформе. Также, в качестве практического примера, будет решена задача, аналогичная экзаменационной.
777 рублей
Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 65
5 стартмани
09.08.2018 16987 23 informa1555 26
Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо
Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.
24700 руб.
Жизненный цикл управляемой формы. Шпаргалка разработчика 240
1 стартмани
29.06.2018 22756 52 stas_ganiev 25
Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо
Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.
29700 руб.
ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") 105
1 стартмани
01.06.2018 20808 86 m-rv 57
Полезные примеры составления схемы компоновки данных #2 183
1 стартмани
22.05.2018 20620 10 SITR-utyos 13
Очный семинар по регулярному менеджменту Александра Фридмана "Вы или Хаос", 12 декабря 2019 г. , Санкт-Петербург Промо
Семинар по регулярному менеджменту от Александра Фридмана для собственников, первых лиц и топов. Технология управленческого планирования, комплексного управления временем и другими ресурсами, выполнением поручений, делами, информацией, контактами (встречи-звонки-почта).
от 11000 до 29000 рублей
БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному 241
1 стартмани
10.05.2018 29098 28 dsdred 34
Как выполнить отчет на СКД через COM и получить данные отчета? 86
2 стартмани
08.05.2018 18912 10 wowik 3
Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо
Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!
29700 руб.
С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо
Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.
Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов 124
1 стартмани
01.02.2018 26397 62 rpgshnik 46
Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример 276
1 стартмани
19.01.2018 41273 61 rpgshnik 26
1С:Предприятие через Интернет. 1С:Fresh Промо
Ведение бухгалтерского и налогового учет, сдача отчетности, управление бизнесом из любой точки мира. Привычные программы «1С» через Интернет без приобретения коробочных программ.
Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8
1 стартмани
29.12.2017 24500 21 agent00mouse 0
Практика доступа в базу 1С через протокол oData. Чтение данных 287
1 стартмани
11.12.2017 61977 257 Dementor 44