новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Полезные мелочи

  • Добавить свою публикацию
  • для этого требуется регистрация

 

Не ошибусь, если скажу, что у каждого, кто долгое время занимается разработкой программного кода, появляется набор приемов, решений и заготовок, которые значительно облегчают жизнь и по этой причине, активно используются своим создателем. Я не являюсь исключением и хочу поделиться некоторыми полезными, с моей точки зрения, решениями. А началось все еще с платформы 7.7. Одно время мне пришлось поддерживать и дорабатывать конфигурацию, которая была построена на компоненте  Бухгалтерский учет. При кодировании я столкнулся с необходимостью постоянно править участки программы, которые отвечали за присвоение значений субконто счета, например при формировании проводок документа в модуле проведения. Изначально в конфигурации присутствовала процедура, которая заполняла параметры проводки. Список аргументов этой процедуры представлен в следующем списке:

  • счетДт;
  • СчетКт;
  • СубконтоДт1;
  • СубконтоДт2;
  • СубконтоДт3;
  • СубконтоДт4;
  • СубконтоКт1;
  • СубконтоКт2;
  • СубконтоКт3;
  • СубконтоКт4.

..........................................................................

Отсчитывать нужную позицию, в которой располагается изменяемый аргумент,  крайне неудобно. Решение было найдено в использовании объекта Список Значений. Давайте сформируем список значений, для которого пара ключ-значение будет представлять собой сочетание имени субконто и его значения. На встроенном языке семерки это выглядело так.

Список=СоздатьОбъект("СписокЗначений");
Список.Установить("Контрагент",Контрагент);
Список.Установить("Договор",Договор);

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

 

Для н=1 по Список.РазмерСписка() цикл
	Знч=Список.ПолучитьЗначение(н,имя);
	Вид_субк=ВидыСубконто.ЗначениеПоИдентификатору(имя);
	Конт.Операция.Дебет.Субконто(вид_субк,знч);
Конеццикла;

Что примечательно в 1С:Предприятии 7.7 , если счет не имеет субконто, найденного по идентификатору, то присвоение Операция.Дебет.Субконто(вид_субк,знч) не будет вызывать ошибки. В результате изложенного подхода мы смогли заменить весь список аргументов для указания значения субконто двумя - СписокСубконтоДт и СписокСубконтоКт. В первый мы заносим значения субконто для дебета,во второй для кредита. Если нам требуется изменить значение субконто, мы используем код СписокСубконто...Установить(<ИмяСубконто>,<ЗначениеСубконто>). Аналогичную методику можно применить и для 1С:Предприятие 8.2.

Вместо списка значений я использую структуру.  Кроме этого применяю вспомогательную функцию

глВернутьИмяСубконто(вхСубк)

аргументом для которой является значение субконто. Код приводится ниже.

функция глВернутьИмяСубконто(вхСубк) Экспорт
	если вхСубк.Предопределенный тогда
		мета= ПланыВидовХарактеристик[вхСубк.Метаданные().Имя];
		возврат  мета.ПолучитьИмяПредопределенного(вхСубк);
	иначе
		возврат вхСубк.Наименование;
	конецесли;
конецфункции

//-------------------------------------------------------------------------------------------------------

вхСубкДт=новый Структруа("Контрагенты,Договоры",Контрагент,Договор);
проводка=вхДокумент.Движения.Хозрасчентный.Добавить();
н=0;                    
для каждого знч из вхСчДт.ВидыСубконто цикл
   н=н+1;
   субк=знч.ВидСубконто;
   имя=глВернутьИмяСубконто(субк);
   если вхСубкДт.Свойство(имя,ЗнчСубк) тогда
	   вхДвижение.СубконтоДт.Вставить(субк,ЗнчСубк);
   иначеесли  вхСубкДт.Свойство("Субконто"+сокрЛП(н),ЗнчСубк) тогда   
	   вхДвижение.СубконтоДт.Вставить(субк,ЗнчСубк)     
   конецесли;
конеццикла;

 Небольшое пояснение. Мы перебираем все субконто счета, внутри цикла определяем имя субконто, смотрим, есть ли запись с данным именем в структуре со значениями субконто, если есть, то присваиваем значение субконто в проводке, если нет, то проверяем на наличие в структуре вхСчДт записи с ключом «Субконто<НомерСубконто>».



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

 
0
Читайте также
Как сохранить настройку отчета
Как передать настройку, сохраненную в моей базе вместе с отчетом пользователю - Комплексная автоматизация 1.1 под 8.2
Закрытие счета
Закрытие счета. 1С 8 предоставляет удобный инструмент для построения запроса
Разработки
Установка Изображений Номенклатуры
Обработка, позволяющая добавлять картинки к элементам номенклатуры и для УТ 10.3
Парсер Яндекс маркета и Торг.Мейл.ру
Загрузка данных по товарам с помощью сервисов Яндекс маркета и Торг.Мейл.ру
Еще от автора
≡ к списку статей