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

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

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

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

Предположим, что нам необходимо организовать проведение первичных документов по дополнительному регистру бухгалтерии в соответствии с таблицей распределения, задаваемой в каждом документе. При стандартном подходе нам необходимо в каждый документ добавить табличную часть и прописать обработку записи в регистр. При ближайшем рассмотрении оказывается, что нам необходимо изменить 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/ 

 

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

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

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

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

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

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


35. lion11 143 17.06.09 16:53 Сейчас в теме
(34) Спасибо, посмотрел. Но не увидел вот чего: если я открываю форму документа, что-нибудь на ней меняю, например номер, потом нажимаю кнопку Доп.реквизиты, не идет проверка на модифицированность, только на существование этого документа. В твоем случае - это все-равно, т.к. у тебя доп.реквизиты отдельно от документа, а у меня реквизиты принадлежат этому документу, и если я потом в доп форме жму записать - возникает ошибка. (весь смысл - чтоб типовую форму не менять) Но все равно идею приму на вооружение и буду использовать. Еще раз спасибо.
36. tsd 105 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 105 21.09.09 19:55 Сейчас в теме
(38) ИсточникДействий должен иметь значение Форма, у формы списка РКО для командной панели ДействияФормы Источник действия установлен ВсеИсточники, поэтому и не ловит
40. lion11 143 22.09.09 08:26 Сейчас в теме
(39) Понятно, спасибо. Поставил Форму и получилось!
Интересно, это так задумано или просто недочет разработчиков?
41. tsd 105 22.09.09 09:31 Сейчас в теме
(40) а кто ж его знает. В типовых это свойство никакой поленой нагрузки не несет, наверное просто не заполнили
42. artbear 1295 02.11.09 09:23 Сейчас в теме
(0) По адресу для скачивания примера лежит файл, который не загружается ни в 8.0, ни в 8.1.14.72
Какая версия 1С нужна для загрузки примера?
43. tsd 105 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 - а там засада: практически нигде нет в процедурах ПередОткрытием Советов :(
Придется сделать через функцию УстановитьДоступностьПоляВводаНомера
Оставьте свое сообщение

См. также

Звуковое управление в 1С 8.3 Промо

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    2607    velemir    28    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    10367    rayastar    45    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5067    comol    26    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    12367    quazare    34    

Использование программных перечислений, ч.1: строковые константы Промо

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

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    38819    unichkin    74    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    41309    user5300    17    

Программная работа с настройками СКД

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

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    42788    ids79    26    

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    32364    John_d    22    

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

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

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

15.10.2018    32550    tormozit    105    

СКД. Шаг 3. Используем макеты для оформления отчета

Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.01.2020    22961    aximo    14    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    24869    kuzyara    38    

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    19542    YPermitin    60    

Оформление и рефакторинг сложных логических выражений Промо

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

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    79698    tormozit    131    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    10171    Sibars    19    

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

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

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

07.10.2019    34183    HostHost    41    

Таблица значений. Нюансы

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

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    42360    Yashazz    50    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

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

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

11.07.2007    50594    tormozit    48    

[Шпаргалка] Программное создание элементов формы

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

Программное создание практически всех популярных элементов формы.

06.09.2019    72209    rpgshnik    70    

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

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

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

05.09.2019    60865    ids79    55    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    34701    YPermitin    25    

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

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

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

10.09.2017    47427    tormozit    74    

Три костыля. Сказ про фокусы в коде

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

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    27507    YPermitin    81    

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

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

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

17.08.2019    37720    ids79    16    

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

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

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

08.08.2019    113837    ids79    67    

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

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

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

25.04.2019    16593    m-rv    2    

Фоновое выполнение кода в 1С - это просто

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

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    46549    avalakh    26    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    31159    json    15    

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

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

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

26.07.2019    80813    ids79    14    

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

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

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

16.04.2019    21198    m-rv    17    

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

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

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

17.07.2019    41127    ids79    27    

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

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

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

09.07.2019    29171    YPermitin    14    

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

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

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

04.07.2019    20620    SeiOkami    50    

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

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

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

01.06.2018    32910    m-rv    22    

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

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

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    63156    ids79    17    

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

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

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

25.06.2019    62624    ids79    26    

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

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

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

11.06.2019    27701    dmurk    146    

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

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

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

05.12.2017    28990    itriot11    34    

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

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

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

04.06.2019    48411    YPermitin    53    

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

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

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

16.05.2019    51668    YPermitin    30    

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

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

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

07.04.2019    38669    ellavs    127    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    79006    Serginio    113    

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

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

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

28.03.2019    28984    ellavs    90    

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

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

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

14.03.2019    35494    YPermitin    53    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    24847    Vladimir Litvinenko    28    

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

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

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

10.11.2018    38495    ids79    40    

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

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

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

03.02.2019    48463    ids79    11    

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

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

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

26.12.2018    29609    ids79    31    

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

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

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

14.12.2018    47066    ids79    81