Вариант доработки Бухгалтерии предприятия

Публикация № 20242

Разработка - Практика программирования

26
Достаточно часто при доработке БП возникает необходимость добавления однотипных реквизитов или табличных частей в большое количество типовых документов конфигурации.  Сразу же возникает вопрос, а что с дальнейшей поддержкой? Каких временных и человеческих ресурсов будет требовать обновление конфигурации? Можно ли каким-либо образом минимизировать изменения, вносимые в типовые документы?

Предположим, что нам необходимо организовать проведение первичных документов по дополнительному регистру бухгалтерии в соответствии с таблицей распределения, задаваемой в каждом документе. При стандартном подходе нам необходимо в каждый документ добавить табличную часть и прописать обработку записи в регистр. При ближайшем рассмотрении оказывается, что нам необходимо изменить 67 документов. Как подумаешь, что при проведении обновления придется сравнивать 67 раз возможные изменения реквизитов,  форм документов и их модулей, вся бодрость духа куда-то пропадает. Как этого избежать? Нам помогут «Советы» :)

Очень хочется при открытии документа программно добавить на форму документа кнопку по нажатию которой будет открываться таблица в которую будем заносить наше распределение. Обработку записи в регистр вынесем в процедуру общего модуля (нами добавленного!), вызывать процедуру будем по подписке на событие ОбработкаПроведения.

Дабы не добавлять ТЧ в каждый документ, организуем справочник «РаспределениеОбъектов». Создаем у этого справочника ТЧ с требуемой структурой таблицы распределения, добавляем реквизит «Документ» в котором будем хранить ссылку на документ владелец. Рисуем форму элемента, которую будем вызывать для заполнения таблицы распределения. Как же нам вызвать  эту форму?

Перед открытием любого документа происходит вызов процедуры общего модуля РаботаСДиалогами.УстановитьПодменюСоветы(ЭлементыФормы.ДействияФормы, "ИмяДокумента"); добавляем в процедуру строку вызова нашей процедуры, в которой будет прописан обработчик добавления кнопки на форму документа.

Процедура УстановитьПодменюСоветы(КоманднаяПанель, ПараметрОтбора = "ВсеСоветы") Экспорт
     ...................
    
// начало изменения атт
    
ОбъектыУправленческогоУчета.ПриОткрытииФормыУпрУчет(КоманднаяПанель
);
    
// конец изменения атт
КонецПроцедуры
// УстановитьПодменюСоветы()

Таким образом, путем добавления 1 строки, мы фактически организовали подписку на событие ПриОткрытии. Этот способ не единственный по приведенным ссылкам можно посмотреть еще несколько прекрасных вариантов

http://www.infostart.ru/projects/4288

//infostart.ru/blogs/900

Теперь нам необходимо добавить кнопку с обработчиком вызывающим форму элемента справочника. Проще всего добавить в модуль свою процедуру, но повторюсь, очень не хочется изменять модуль формы документа. Будем пробовать пользоваться существующими процедурами.

Для правильной отработки алгоритма нам необходимы две вещи:

  • распознать нажатие именно нашей кнопки;
  • иметь ссылку на документ из которого происходит вызов.

Попробуем поработать с процедурой ДействияФормыОткрытьСоветы(Кнопка), вызывающей процедуру общего модуля ОткрытьСоветы(Кнопка).  

Нашу кнопку логичнее всего распознавать по имени, Документ будем шифровать в строку пояснения кнопки. Можно добавить небольшой бантик в виде картинки кнопки. Например если таблица распределения не введена, то картинка жирный восклицательный знак, если введена, то зеленая галочка.

Ниже приведены процедуры, в которых происходит непосредственное добавление кнопки на форму документа.

 Процедура ПриОткрытииФормыУпрУчет(КоманднаяПанель) Экспорт
     Попытка
         
ИсточникДействия = КоманднаяПанель.ИсточникДействий.ДокументОбъект
;
         
ДобавитьКнопкуВводУпрОбъектаВДокумент(КоманднаяПанель, ИсточникДействия
);
     Исключение
          Попытка
              
ИсточникДействия = КоманднаяПанель.ИсточникДействий.ДокументСписок
;
              
ДобавитьКолонкуВТЧСпискаДокументов(КоманднаяПанель, ИсточникДействия
);
          Исключение
          КонецПопытки;
     КонецПопытки;
КонецПроцедуры

 // добавляем кнопку вызова справочника распределения на командную панель
// кнопку добавляем только для документов являющихся регистраторами регистра "УправленческийБаланс"

Процедура ДобавитьКнопкуВводУпрОбъектаВДокумент(КоманднаяПанель, Документ
)
     Если Не
ПроверитьРегистраторРегистраБухгалтерии(Документ,"УправленческийБаланс"
) Тогда
          Возврат;
     КонецЕсли;
    
СписИсключаемыхДоков = ПолучитьСписокВидовДокументовИсключений
();
     Если Не
списИсключаемыхДоков.НайтиПоЗначению(Документ.Метаданные().Имя
) = Неопределено Тогда
          Возврат;
     КонецЕсли;

     
// в строку пояснения шифруем наш документ
    
СтрокаПояснения = "Ввести объект упр. учета для: " + Документ.Метаданные().Имя + " " + СокрЛП(Документ.Номер) + " от " + Документ.Дата
;

    
нДействие = новый Действие("ДействияФормыОткрытьСоветы"
);

    
новаяКнопка = КоманднаяПанель.Кнопки.Добавить("ВводУпрОбъекта",ТипКнопкиКоманднойпанели.Действие,"Объект упр.учета",нДействие
);
    
новаяКнопка.Подсказка = "Ввести объект упр. учета"
;
    
новаяКнопка.Пояснение = СтрокаПояснения
;
    
новаяКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.НадписьКартинка
;

    
УстановитьКартинкуКнопкиВводУпрОбъекта(Документ,новаяКнопка
);
КонецПроцедуры

 

При нажатии на кнопку происходит вызов процедуры общего модуля РаботаСДиалогами ОткрытьСоветы

 

 Процедура ОткрытьСоветы(Кнопка) Экспорт
     Если
Кнопка.Имя = "ВводУпрОбъекта" Тогда
// изменение атт
         
ОбъектыУправленческогоУчета.ОткрытьФормуВыбораОбъектаУпрУчета(Кнопка
);
     Иначе 
// типовой код
         
Форма = Обработки.Советы.ПолучитьФорму
();
         
Форма.ПараметрОтбора = Сред(Кнопка.Имя, 7
);
         
Форма.Открыть
();
     КонецЕсли;
КонецПроцедуры
// ОткрытьСоветы()

 

В нашей процедуре открываем форму элемента справочника распределения

 Функция ПолучитьЭлементРаспределенияОбъектовУпрУчета(Документ)
    
Запрос = Новый Запрос
;
    
Запрос.Текст
=
    
"ВЫБРАТЬ
     |      РаспределениеОбъектовУправленческогоУчета.Ссылка
     |ИЗ
     |      Справочник.РаспределениеОбъектовУправленческогоУчета КАК РаспределениеОбъектовУправленческогоУчета
     |ГДЕ
     |      РаспределениеОбъектовУправленческогоУчета.Документ = &Документ"
;
    
Запрос.УстановитьПараметр("Документ",Документ.Ссылка
);

    
Результат = Запрос.Выполнить
();

     Если
Результат.Пустой
() Тогда
          
Элемент = Справочники.РаспределениеОбъектовУправленческогоУчета.ПустаяСсылка
();
     Иначе
          
Выборка = Результат.Выбрать
();
          
Выборка.Следующий
();
          
Элемент = Выборка.Ссылка
;
     КонецЕсли;
     Возврат
Элемент
;
КонецФункции

Процедура ОткрытьФормуВыбораОбъектаУпрУчета(Кнопка) Экспорт
    
// разбираем строку пояснения в которой зашифрован документ
    
СтрокаПояснения = Кнопка.Пояснение
;
    
СтрокаПояснения = Сред(СтрокаПояснения,31
);
    
СтрокаПояснения = СокрЛП(СтрЗаменить(СтрокаПояснения,"от ",""
));
    
СтрокаПояснения = СтрЗаменить(СтрокаПояснения," ",Символы.ПС
);

    
ВидДокумента     = СтрПолучитьСтроку(СтрокаПояснения,1
);
    
НомерДокумента = СтрПолучитьСтроку(СтрокаПояснения,2
);
    
ДатаДокумента   = СтрПолучитьСтроку(СтрокаПояснения,3
);

    
День   = Число(Лев(ДатаДокумента,2
));
    
Месяц = Число(Сред(ДатаДокумента,4,2
));
    
Год     = Число(Прав(ДатаДокумента,4
));
    
ДатаДокумента = Дата(Год,Месяц,День
);

    Если (
Дата(1,1,1) = ДатаДокумента) и (НомерДокумента = ""
) Тогда
      
Сообщить("Перед выбором объекта управленческого учета документ необходимо записать",СтатусСообщения.Внимание
);
       Возврат;
    КонецЕсли;

   
// ищем документ
   
Документ = Документы[ВидДокумента].НайтиПоНомеру(НомерДокумента,ДатаДокумента
);

   
//открываем форму справочника
   
Элемент = ПолучитьЭлементРаспределенияОбъектовУпрУчета(Документ
);

    Если
Элемент.Пустая
() Тогда
        
Элемент = Справочники.РаспределениеОбъектовУправленческогоУчета.СоздатьЭлемент
();
        
Элемент.Документ = Документ
;
    Иначе
        
Элемент = Элемент.ПолучитьОбъект
();
    КонецЕсли;

   
Форма = Элемент.ПолучитьФорму("ФормаЭлемента"
);
   
Форма.ОткрытьМодально
();

   
УстановитьКартинкуКнопкиВводУпрОбъекта(Документ,Кнопка
);
КонецПроцедуры

 Не забываем, что при пометке на удаление документа необходимо пометить на удаление соответствующий элемент справочника, а при снятии пометки удаления с документа снять ее и со справочника. Пишем обработчик и сажаем на подписку ПриЗаписи в которой проверяем состояние пометки удаления документа.

Изменения типовых объектов сведены к изменению 2 процедур общего модуля РаботаСДиалогами, все остальное стоит сбоку и жить никому не мешает :)

 

Добавил пример в виде мини конфы. Скачать можно отсюда

http://www.infostart.ru/profile/9211/forum/9884/ 

 

26

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. MRAK 710 03.06.09 07:43 Сейчас в теме
Опять же, не раскрыта тема внешнего добавления элементов на существующую форму...
28. inse0f 03.06.09 22:22 Сейчас в теме
(1) а если раскрыта просто никто не хочет ее показывать?))
2. tsd 148 03.06.09 07:48 Сейчас в теме
не совсем понял, что я должен раскрыть. Кроме кнопки никакие элементы на форму не добавляются
3. MRAK 710 03.06.09 08:00 Сейчас в теме
(2) пользователю было бы удобней видеть добавленные элементы в типовой форме
7. tsd 148 03.06.09 08:42 Сейчас в теме
(3) Вопрос спорный. Если реквизиты расположены на форме так, что они видны сразу после открытия, то да. Если необходимо переключать закладки, то разница небольшая. Если на первую страницу панели формы напихать большое количество реквизитов, то можно форму перегрузить.
4. 03.06.09 08:24 Сейчас в теме
...Изменения типовых объектов сведены к изменению 2 процедур общего модуля РаботаСДиалогами, все остальное стоит сбоку и жить никому не мешает :)...

А разве не нужно в модулях изменяемых документов делать подписку на события: ОбработкаПроведения, ПриЗаписи если мы их будем обрабатывать?
5. MRAK 710 03.06.09 08:27 Сейчас в теме
(4) при чем здесь модули доков? подписки - это отдельные объекты конфы.
6. tsd 148 03.06.09 08:33 Сейчас в теме
(4) подписка на событие устанавливается не в модуле объекта. В метаданных есть специальные объекты Общие-->"Подписки на события". В общем модуле Вы пишете свою процедуру, указываете ее как обработчик подписки, выбираете источники действия и указываете событие возникновение которого стартует Вашу процедуру. Процедура будет вызвана в конце события. Небольшим условием является то, что Ваша процедура должна содержать определенные параметры. Первым должен идти Источник действия, далее параметры стандартного обработчика 1С. Кроме того процедура должна быть экспортной.

8. coder1cv8 3449 03.06.09 09:39 Сейчас в теме
9. Totoro 550 03.06.09 10:01 Сейчас в теме
Теперь дошло. А что уникальный идентификатор не стал в пояснении шифровать, так по-моему проще:
GUID = СсылкаНаОбъект.ПолучитьУникальныйИдентификатор;
СсылкаНАОбъект = Документы[ВидДокумента].ПолучитьСсылку(GUID);
10. Totoro 550 03.06.09 10:04 Сейчас в теме
(9)+ перепутал
GUID = СсылкаНаОбъект.УникальныйИдентификатор()
13. tsd 148 03.06.09 11:11 Сейчас в теме
(10) да я как-то про это вообще не задумывался. Получение ссылки на док труда не вызывает и ладно, кроме того пояснение выводится в строку состояния. Наверное, все же лучше видеть некую внятную подсказку, чем непонятный набор символов :)

(11) да, конечно. В приведенном примере, ессно, добавятся изменения по движениям.
Но, статья писана про организацию ввода дополнительных реквизитов с минимальными изменениями типовых форм. Поэтому и указал, что изменения всего в 2 процедурах.
Кстати, по приведенному примеру обновление все равно получается очень легким. Мы в конец справки по нашему регистру забили требуемый состав регистраторов, при обновлении никто особо не парится, после объединения просто заново прощелкивается состав регистраторов, по времени минута уходит.
В любом случае, это гораздо быстрее чем проверять формы доков :)
15. Totoro 550 03.06.09 11:30 Сейчас в теме
(13) Это я к тому, что дата, как и номер документа являются величинами не постоянными и за время работы в форме могут быть изменены :)
11. KapasMordorov 03.06.09 10:37 Сейчас в теме
<QUOTE>Изменения типовых объектов сведены к изменению 2 процедур общего модуля РаботаСДиалогами, все остальное стоит сбоку и жить никому не мешает :)</QUOTE>
В самом начале статьи написано про проведение по дополнительному регистру бухгалтерии.
Без регистратора может быть только регистр сведений. Т.е. в 67 документах нужно редактировать набор движений.
Сферический конь в ....?

16. Totoro 550 03.06.09 11:32 Сейчас в теме
(11) Ничто не мешает использовать механизм от WiseSnake с учетом приведенного кода ... Тогда движения не нужно будет редактировать.
18. KapasMordorov 03.06.09 11:41 Сейчас в теме
(16) Так и получается, что на каждую мелочь нужен механизм.
И тогда простота обновления отличается от заявленной.
19. Totoro 550 03.06.09 11:52 Сейчас в теме
(18) Извини, но тут уже готовое решение дано. Хочешь без движений - добавляей свой связанный регистр сведений, а при вызове созданной кнопки будешь открывать форму этого регистра, а не документа по его виду (можно сделать универсальную форму как для свойств) и по ссылке устанавливать подчиненые значения. Тогда изменений действительно минимум - добавить тип обекта в регистр, поведение его форм и прописать создание и выполнение кнопки из советов (можно еще использовать процедурку обновления заголовка формы в БП, что бы проверять запись нового документа и обновления ссылки на кнопке).
12. alexk-is 6425 03.06.09 11:05 Сейчас в теме
Предлагаю раскрасить примеры кода
14. tsd 148 03.06.09 11:13 Сейчас в теме
(12) не умею :( Подскажи, плиз, куда тыкать нужно.
17. alexk-is 6425 03.06.09 11:32 Сейчас в теме
21. tsd 148 03.06.09 13:06 Сейчас в теме
(17) блин, что-то не ладно с руками в датском королевстве. Оставлю как есть, лучшее враг хорошего :)
20. 03.06.09 12:54 Сейчас в теме
Каким-нибудь еще механизмом можно отловить событие нажатия созданной кнопки, кроме как через "советы"? Просто советы есть не во всех конфигурациях.
22. tsd 148 03.06.09 13:11 Сейчас в теме
(20) по ссылкам можно посмотреть другие способы обработки событий.
В УТ, например, для установки кнопки можно использовать процедуру УстановитьКнопкуПечати(), а нажатие на кнопку отлавливать через ОбновитьФормуПодбора()
Правда последняя есть только в 46 документах, нет в документах по банку, кассе и доках ввода начальных остатков
23. 03.06.09 13:33 Сейчас в теме
А возможно отловить событие через свойство Кнопки - "Действие"?
Пр: Меню.Кнопки.Добавить(, , , Действие).
В справке написано: "Для обработки события может быть вызвана процедура или функция модуля формы или модуля приложения, имя которой задано в конструкторе."
Для того, что б не менять код документа - модуль формы не подходит. А вот в модуле приложения почему-то не запускается процедура :-(
26. tsd 148 03.06.09 13:41 Сейчас в теме
(23) у меня не получилось вызвать процедуру, расположенную не в модуле формы.
24. KapasMordorov 03.06.09 13:33 Сейчас в теме
Не буду утверждать, что в каждом документе.
Но в БП в форме документа есть меню "Действия" и подпункты а)"Редактировать номер", б)"Структура подчиненности документа", для которых есть процедуры в модуле формы, вызывающие процедуры общего модуля.
25. 03.06.09 13:41 Сейчас в теме
(24) они не передают в общий модуль имя кнопки, по которой произошло нажатие
27. KapasMordorov 03.06.09 13:51 Сейчас в теме
(25)
Менюшку с вопросом, какое действие выполнить.
Неудобно, ну так вопрос про неудобства не идет, минимализм, понимаешь.
29. dvv01 120 04.06.09 11:12 Сейчас в теме
ответ в http://infostart.ru/projects/4332/ - обработка табличных частей - автоматически к нужным документам добавляется меню, таб часть меняется или генерятся новые документы. Конфигурация не меняется (может только права доступа, хотя и это можно проверить в самой обработке). Примеры отобраны из Торговли, но сути не меняет
30. lion11 143 15.06.09 13:18 Сейчас в теме
Хорошая штука!!!
Вот только не могу понять, как отловить признак модифицированности документа перед открытием доп.формы в процедуре ОткрытьФормуВыбораОбъектаУпрУчета, чтоб можно было сохранить этот док. В ней есть проверка на существование дока. Можно это как-нибудь сделать?
31. tsd 148 15.06.09 19:13 Сейчас в теме
(30) для чего тебе признак модифицированности?
32. lion11 143 16.06.09 07:52 Сейчас в теме
(31) Я хочу через таким образом добавленную кнопку вызывать форму дополнительных реквизитов, типа как в http://infostart.ru/projects/4288/ , только через Советы, так меньше изменений в типовой. А если док в основной форме изменен, то в этой форме с доп.реквизитами он уже не запишется. Вот мне надо проверить, были ли изменения в текущей открытой форме дока, и с вопросом записать, а потом редактировать свои реквизиты.
33. tsd 148 16.06.09 10:29 Сейчас в теме
34. tsd 148 17.06.09 13:30 Сейчас в теме
(32) у меня проблем никаких не возникло.
По ссылке можешь качнуть пример, там все работает.


35. lion11 143 17.06.09 16:53 Сейчас в теме
(34) Спасибо, посмотрел. Но не увидел вот чего: если я открываю форму документа, что-нибудь на ней меняю, например номер, потом нажимаю кнопку Доп.реквизиты, не идет проверка на модифицированность, только на существование этого документа. В твоем случае - это все-равно, т.к. у тебя доп.реквизиты отдельно от документа, а у меня реквизиты принадлежат этому документу, и если я потом в доп форме жму записать - возникает ошибка. (весь смысл - чтоб типовую форму не менять) Но все равно идею приму на вооружение и буду использовать. Еще раз спасибо.
36. tsd 148 17.06.09 20:06 Сейчас в теме
(35) я думал ты в процедуру Процедура ОткрытьФормуДопРеквизитов(Кнопка)заглянешь. Там специально вставлено
ФормаОбъекта = Объект.ПолучитьФорму();
// Сообщить("Модифицированность формы: " + ФормаОбъекта.Модифицированность);

:))
37. lion11 143 18.06.09 08:21 Сейчас в теме
(36) Вот ведь ... :)) Смотрел в эту строчку, но просмотрел. У меня было нечто подобное, но я сначала находил объект, а потом его форму - и не работало, а тут у тебя гораздо проще. Потом почитал хелп ПолучитьФорму() для ссылки - там все написано. А так всё получилось. Огромное спасибо, что наставил на путь истинный :)
38. lion11 143 21.09.09 16:18 Сейчас в теме
Возник вопрос:
У меня на некоторые документы не ловится список, а именно в строке ИсточникДействия = КоманднаяПанель.ИсточникДействий.ДокументСписок;
не ловится ДокументСписок. Пробовал на РКО и ав.отчеты. (Бухгалтерия предприятия 1.6.18.2). Хотя ДокументОбъект на эти доки ловится успешно.
Есть мысли, почему?
39. tsd 148 21.09.09 19:55 Сейчас в теме
(38) ИсточникДействий должен иметь значение Форма, у формы списка РКО для командной панели ДействияФормы Источник действия установлен ВсеИсточники, поэтому и не ловит
40. lion11 143 22.09.09 08:26 Сейчас в теме
(39) Понятно, спасибо. Поставил Форму и получилось!
Интересно, это так задумано или просто недочет разработчиков?
41. tsd 148 22.09.09 09:31 Сейчас в теме
(40) а кто ж его знает. В типовых это свойство никакой поленой нагрузки не несет, наверное просто не заполнили
42. artbear 1161 02.11.09 09:23 Сейчас в теме
(0) По адресу для скачивания примера лежит файл, который не загружается ни в 8.0, ни в 8.1.14.72
Какая версия 1С нужна для загрузки примера?
43. tsd 148 02.11.09 09:33 Сейчас в теме
(42) 8.1. , судя по дате, тогда у меня стоял 12 релиз платформы. Похоже просто файл битый. Посмотрю дома, если пример сохранился, то выложу заново.
44. vladimir_che 26.07.10 16:01 Сейчас в теме
Занимательно. Ваш пост единстенный находится поиском по сайту по слову "писька".

" .НадписьКартинка "
45. lion11 143 16.12.10 15:45 Сейчас в теме
Грустное примечание:
Сделал это все в редакции 1.6, все красиво. Начал переходить на редакцию 2.0 - а там засада: практически нигде нет в процедурах ПередОткрытием Советов :(
Придется сделать через функцию УстановитьДоступностьПоляВводаНомера
Оставьте свое сообщение

См. также

Полезные процедуры и функции для программиста 145

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Универсальные функции

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019    9596    HostHost    23       

Агрегатные функции СКД, о которых мало кто знает 344

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    13801    ids79    44       

Отслеживание выполнения фонового задания 142

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    11088    ids79    16       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 256

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    15183    ids79    30       

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты 133

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    13723    ids79    6       

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ 152

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    11952    ids79    27       

Регистры сведений. За кулисами 129

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    9344    YPermitin    12       

"Меньше копипаста!", или как Вася универсальную процедуру писал 183

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    8328    SeiOkami    49       

Создание отчетов с помощью СКД - основные понятия и элементы 210

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    21801    ids79    17       

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017 179

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    12968    dmurk    134       

Подсистема "Варианты отчетов". Используете ли Вы ее правильно? 217

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Работа с интерфейсом БСП (Библиотека стандартных подсистем)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    17546    YPermitin    49       

Регистры накопления. Структура хранения в базе данных 176

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    19632    YPermitin    27       

Выполнение внешней обработки в фоновом задании 149

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    11689    Eret1k    23       

Выгрузка документа по условию 5

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    6455    m-rv    2       

Как прикрутить ГУИД к регистру сведений 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    9103    m-rv    16       

О расширениях замолвите слово... 194

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования Разработка

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    18117    ellavs    125       

Git-репозитории для 1С-кода (опыт использования при небольших проектах) 202

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    14256    ellavs    83       

Трюки с внешними источниками данных 166

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    14762    YPermitin    52       

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS) 168

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Практика программирования БСП (Библиотека стандартных подсистем) Роли и права

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    17859    ids79    9       

EnterpriseData – часть 2. Процесс выгрузки данных 127

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    14154    ids79    27       

Новый подход к обмену данными EnterpriseData 207

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    23608    ids79    72       

Программное заполнение пользовательских параметров и отборов СКД 136

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Публикация представляет из себя краткие примеры того, как можно заполнять параметры СКД программно так, чтобы все параметры и отборы были доступны в быстрых настройках и в обычных (типовых) настройках параметров и отборов СКД.

13.11.2018    22739    Unk92    19       

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 127

Статья Программист Нет файла v8 v8::blocking 1cv8.cf Бесплатно (free) Математика и алгоритмы Практика программирования

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    22603    ids79    40       

Вспомогательные инструкции в коде 1С 106

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    21755    tormozit    100       

Произвольный код в фоновом режиме 166

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Задача: реализовать выполнение произвольного кода в фоновом режиме без изменения конфигурации, т.е. во внешней обработке.

03.09.2018    16060    nikita0832    42       

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C 147

Статья Программист Нет файла v8 Россия Бесплатно (free) Математика и алгоритмы Практика программирования

У многих начинающих 1С программистов часто возникают вопросы про клиент-серверное взаимодействие в 1С и чтобы разобраться в непростых механизмах платформы, необходимо понять, что же такое контекст, для чего предназначены директивы компиляции, что представляют собой контекстные/внеконтекстные вызовы и как наиболее оптимально описывать прикладные задачи в модулях управляемых форм.

23.08.2018    23335    Rain88    42       

Повышаем эффективность разработки правил обмена 125

Статья Программист Нет файла v8 КД ОС Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    20532    olegtymko    47       

Введение в механизм представлений в ЗУП ред. 3 157

Статья Программист Нет файла v8 v8::СПР ЗУП3.x Бесплатно (free) Практика программирования

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    25940    xrrg    82       

Как сделать запрос на изменение данных 75

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Практика программирования

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    22463    m-rv    21       

Строим графы средствами 1С (без GraphViz) 43

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    18230    slozhenikin_com    19       

Распределение расходов пропорционально продажам 9

Статья Программист Пользователь Нет файла v8 v8::ОУ УТ10 УУ Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Бесплатно (free) Практика программирования

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    12263    Rustig    9       

Просмотр временных таблиц запроса в отладчике без изменения кода 130

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Практика программирования

Данный способ можно использовать для просмотра содержимого временных таблиц запросов (менеджеров временных таблиц) без внесения изменений в код.

24.04.2018    27052    avfed@rambler.ru    19       

Минимализмы 3 356

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Универсальные функции

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    37514    ildarovich    44       

Этюды по программированию. Взаимодействие с Microsoft Word 109

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Часто приходится заниматься созданием сложных документов Word с таблицами, вложенными фрагментами, хитрым оформлением и прочими радостями жизни. Это - попытка как-то структурировать полученный опыт, чтобы не приходилось перерывать ворох старых обработок в поисках крупиц истины. Надеюсь, эта статья будет полезна и Вам.

11.12.2017    26801    milkers    23       

Метод формирования движений в типовых регистрах нетиповыми регистраторами 31

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    22185    itriot11    34       

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена) 738

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    143889    MaxS    251       

Заполнение данных по ИНН контрагента с помощью альтернативного сервиса огрн.онлайн 131

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Код для заполнения данных по ИНН контрагента из ЕГРЮЛ с сайта огрн.онлайн.

01.11.2017    24047    slava_1c    49       

Программные перечисления, ч.2: приемы кэширования при разработке 67

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

Все знают, что такое кэш, и зачем он нужен. Но в 1С разработчик обычно использует кэширование только на уровне конфигурации, а в какой-нибудь обработке скорее ломает голову над запросом - как получить все данные за один заход... Хочется рассказать о том, как можно добиться хороших результатов с стратегией "разделяй и властвуй".

30.10.2017    22353    unichkin    18       

Разбираемся с настройками компоновки данных 161

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Краткая шпаргалка по программной работе с настройками СКД

29.10.2017    25473    json    9       

Работа с Excel 299

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Загрузка и выгрузка в Excel

Собрал различные полезности для работы с Excel из 1С. Иногда приходится форматировать документ Excel программно из 1С. Так вот, чтобы не искать постоянно на просторах интернета как сделать левое выравнивание в ячейке Excel из 1С и т.п. решил опубликовать это...

23.10.2017    27671    arakelyan    39       

Добавление команд печати в конфигурациях на БСП 2.4.3 (в частности, в самописных документах в Бухгалтерии 3.0 после релиза 3.0.52.35) 145

Статья Программист Нет файла v8 v8::БУ БП3.0 Россия Бесплатно (free) Печатные формы документов Практика программирования БСП (Библиотека стандартных подсистем)

В статье https://infostart.ru/public/237013/ пользователя nick max рассматривался список действий для подключения команд печати в Бухгалтерии 3.0, работающей на БСП 2.3.6. В новом релизе Бухгалтерии 3.0.52.35 от 15.09.2017г. стала использоваться БСП 2.4.3, из-за чего произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

18.09.2017    49374    bugtester    44       

Отказ от работы с временными файлами при работе с двоичными данными или Потоки как простая замена ADODB.Stream и временным файлам 129

Статья Программист Нет файла v8 Россия Бесплатно (free) Практика программирования

В платформе начиная с версии 3.8.9 (как я понял по документации) появился расширенный функционал средств работы с двоичными данными. Если раньше простой и очевидный способ преобразования данных строился на использовании временных файлов, то теперь благодаря новым средствам можно уйти от их использования.

12.09.2017    19216    vardeg    31       

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере 128

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    35382    tormozit    72       

Ускоряем 1С: модули с повторным использованием возвращаемых значений 137

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования

По роду своей деятельности, мне часто приходится обсуждать с программистами детали реализации той или иной функциональности. Очень часто, разговаривая даже с квалифицированными специалистами я сталкиваюсь с незнанием сути платформенной функциональности Повторного использования возвращаемых значений общих модулей. В данной статье я постараюсь дать краткий обзор и основные особенности этой функциональности.

04.09.2017    44622    m-rv    60