Excel Studio for 1C V2.11

06.11.22

Интеграция - Загрузка и выгрузка в Excel

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Excel Studio for 1C V2.11:
.epf 26,22Kb
0
0 Скачать (3 SM) Купить за 2 450 руб.
Пример. Полная стоимость кредита V1.14
.epf 26,07Kb
12
12 Скачать (1 SM) Купить за 1 850 руб.
Пример Расчёт электрических нагрузок V1.15
.epf 22,05Kb
13
13 Скачать (1 SM) Купить за 1 850 руб.
Excel Studio for 1C V2.11: Шаблон справочника и документа
.cf 35,31Kb
16
16 Скачать (1 SM) Купить за 1 850 руб.

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

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

Простой пример: В конфигурации нужно создать документ: "Расчет цены изделия". Сам расчет давно существует в Excel и имеет примерно следующий вид:

Номер:    
Дата:    
Расчетный курс: 85  
Проект:    
Наименование:    
Менеджер:    
Исполнитель:    
     
     
Покупное изделие
Цена изготовителя, евро. - 0 €
страховка, евро. 0,19% 0 €
кол-во машин, шт. 4  
автофрахт, евро. 10000 2 500 €
таможенная пошлина, евро. 0,00% 0 €
НДС, евро. 18,00% 450 €
Услуги брокера на 1 машину , евро. 1000 250 €
Банковские расходы, евро. 1,00% 0 €
ИТОГО стоимость импортного оборудования, евро. - 0 €
ИТОГО стоимость импортного оборудования, руб. - 0р.
Стоимость НР-17 (наше производство), руб.    
НП-19, руб. -  
Испытания, руб. - 0р.
ВСЕГО прямых расходов, руб. - 0р.
Наценка, руб. 4% 0р.
Продажная цена с НДС, руб. - 0р.
Продажная цена без НДС, руб. - 0р.
Дополнительные усл. (с НДС)
     
     
     
     
     
ИТОГО цена предложения с НДС  - 0р.
ИТОГО цена предложения без НДС - 0р.

 Первым делом мы из конфигурации примера копируем в нашу конфигурацию шаблон документа и переименовываем его под наши нужды.

Запускаем Excel Studio. Загружаем табличный документ из Excel и помещаем его в макет табличного документа ЛИСТ1  нашего документа в конфигураторе. (Более детально порядок действий смотри в следующем примере). Создаем автоматически  код 1С: 

СписокЛистовЕкселя.Добавить("Расчет","1");

ТекущийЛистРасчета = 1; 
ЯчейкаТД("C12").Текст = ЗначТД("C11")*ЗначТД("B12"); // 
ЯчейкаТД("C14").Текст = ЗначТД("B14")/ЗначТД("B13"); // 
ЯчейкаТД("C15").Текст = (ЗначТД("C11")+ЗначТД("C12")+ЗначТД("C14")/3*2)*ЗначТД("B15"); // 
ЯчейкаТД("C16").Текст = (ЗначТД("C11")+ЗначТД("C12")+ЗначТД("C14")+ЗначТД("C15"))*ЗначТД("B16"); // 
ЯчейкаТД("C17").Текст = ЗначТД("B17")/ЗначТД("B13"); // 
ЯчейкаТД("C18").Текст = ЗначТД("C11")*0.01; // 
ЯчейкаТД("C19").Текст = ?(ЗначТД("C11")=0,0,SUM("C11:C18")); // 
ЯчейкаТД("C20").Текст = ЗначТД("C19")*ЗначТД("B3"); // 
ЯчейкаТД("C24").Текст = SUM("C20:C23"); // 
ЯчейкаТД("C25").Текст = ЗначТД("C24")*ЗначТД("B25"); // 
ЯчейкаТД("C26").Текст = SUM("C24:C25"); // 
ЯчейкаТД("C27").Текст = ЗначТД("C26")/1.18; // 
ЯчейкаТД("C34").Текст = ЗначТД("C26")+SUM("C29:C33"); // 
ЯчейкаТД("C35").Текст = ЗначТД("C34")/1.18; // 

Вставляем получившийся код в кофигураторе в процедуру " РассчитатьНаСервере()" нашего документа.

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

 

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

У нас есть пример расчета Полной Стоимости Кредита. Особого смысла переносить его в 1С я не вижу,  но на нем мы можем посмотреть возможности генератора и технологию переноса. 

Лист1:

 

Мы запускаем генератор и выбираем нужный файл Excel,  выбираем нужный лист и загружаем его содержимое с помощью кнопки “Выполнить загрузку”. После чего меняем Номер листа на следующий по порядку и снова жмем кнопку “Выполнить загрузку”.

Нажимаем кнопку “Получить макет”. После небольшой паузы на экране откроется табличный документ, с цветовой раскраской, границами и объединениями ячеек, а также содержимым, соответствующий листу Excel.:

Выделяем все ячейки (Ctrl+A)  и копируем в буфер обмена (Ctrl+ С)  после чего, открываем  шаблон в конфигураторе, находим там макет соответствующего листа, снова выделяем все ячейки (Ctrl+A)  и вставляем из буфера обмена (Ctrl+ V)  содержимое ячеек. Если нужного макета нет, то необходимо создать макет с именем “Лист”+номер листа. Содержимое макета – табличный документ.

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

Переходим на закладку генератора  “Упорядоченные по порядку расчета”  и нажимаем кнопку “Получить упорядоченные фомулы”:

Мы получаем формулы, упорядоченные по порядку расчета. Обратите внимание на трансформацию формул. Вы также можете выделить нужные строчки (или даже все) и нажать кнопку “Получить наименование слева”.  Колонка Наименование заполнится содержанием ячейки слева от формулы. Как правило, там находится описание ячейки. Это описание будет добавлено в комментарии в код 1С, что позволит лучше в нем ориентироваться.

Кнопка контроль позволить обернуть код расчета строки  1С в  "Попытку; ...  Исключение; КонецПопытки". Это может быть необходимо при возможности ошибки в строке расчета, например, делении на 0;

                Переходим на закладку Код 1С и нажимаем кнопку “Сформировать код”:

Получаем следующий код:

СписокЛистовЕкселя.Добавить("Лист1","1");

ТекущийЛистРасчета = 1; 
ЯчейкаТД("C9").Текст = ЗначТД("C5")/12; // месячная процентная ставка
ЯчейкаТД("C13").Текст = (ЗначТД("C4")*ЗначТД("C9"))/(1-POWER((1+ЗначТД("C9")),(-ЗначТД("C11")))); // ежемесячный платеж
ЯчейкаТД("C21").Текст = ЗначТД("C4"); // 1 месяц
ЯчейкаТД("D21").Текст = ЗначТД("C21")*ЗначТД("C9"); // 250 000
ЯчейкаТД("E21").Текст = ?(ЗначТД("A21")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D21")); // 2 500
ЯчейкаТД("C22").Текст = ?(ЗначТД("A22")>ЗначТД("C11"),0,ЗначТД("C21")-ЗначТД("E21")); // 2 месяц
ЯчейкаТД("D22").Текст = ЗначТД("C22")*ЗначТД("C9"); // 244 196,4225467872
ЯчейкаТД("E22").Текст = ?(ЗначТД("A22")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D22")); // 2 441,964225467872
ЯчейкаТД("C23").Текст = ?(ЗначТД("A23")>ЗначТД("C11"),0,ЗначТД("C22")-ЗначТД("E22")); // 3 месяц
ЯчейкаТД("D23").Текст = ЗначТД("C23")*ЗначТД("C9"); // 238 334,8093190423
ЯчейкаТД("E23").Текст = ?(ЗначТД("A23")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D23")); // 2 383,348093190423
ЯчейкаТД("C24").Текст = ?(ЗначТД("A24")>ЗначТД("C11"),0,ЗначТД("C23")-ЗначТД("E23")); // 4 месяц
ЯчейкаТД("D24").Текст = ЗначТД("C24")*ЗначТД("C9"); // 232 414,5799590199
ЯчейкаТД("E24").Текст = ?(ЗначТД("A24")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D24")); // 2 324,145799590199
ЯчейкаТД("C25").Текст = ?(ЗначТД("A25")>ЗначТД("C11"),0,ЗначТД("C24")-ЗначТД("E24")); // 5 месяц
ЯчейкаТД("D25").Текст = ЗначТД("C25")*ЗначТД("C9"); // 226 435,1483053973
ЯчейкаТД("E25").Текст = ?(ЗначТД("A25")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D25")); // 2 264,351483053973
ЯчейкаТД("C26").Текст = ?(ЗначТД("A26")>ЗначТД("C11"),0,ЗначТД("C25")-ЗначТД("E25")); // 6 месяц
ЯчейкаТД("D26").Текст = ЗначТД("C26")*ЗначТД("C9"); // 220 395,9223352385
ЯчейкаТД("E26").Текст = ?(ЗначТД("A26")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D26")); // 2 203,959223352385
ЯчейкаТД("C27").Текст = ?(ЗначТД("A27")>ЗначТД("C11"),0,ЗначТД("C26")-ЗначТД("E26")); // 7 месяц
ЯчейкаТД("D27").Текст = ЗначТД("C27")*ЗначТД("C9"); // 214 296,3041053781
ЯчейкаТД("E27").Текст = ?(ЗначТД("A27")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D27")); // 2 142,963041053781
ЯчейкаТД("C28").Текст = ?(ЗначТД("A28")>ЗначТД("C11"),0,ЗначТД("C27")-ЗначТД("E27")); // 8 месяц
ЯчейкаТД("D28").Текст = ЗначТД("C28")*ЗначТД("C9"); // 208 135,6896932191
ЯчейкаТД("E28").Текст = ?(ЗначТД("A28")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D28")); // 2 081,356896932191
ЯчейкаТД("C29").Текст = ?(ЗначТД("A29")>ЗначТД("C11"),0,ЗначТД("C28")-ЗначТД("E28")); // 9 месяц
ЯчейкаТД("D29").Текст = ЗначТД("C29")*ЗначТД("C9"); // 201 913,4691369385
ЯчейкаТД("E29").Текст = ?(ЗначТД("A29")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D29")); // 2 019,134691369385
ЯчейкаТД("C30").Текст = ?(ЗначТД("A30")>ЗначТД("C11"),0,ЗначТД("C29")-ЗначТД("E29")); // 10 месяц
ЯчейкаТД("D30").Текст = ЗначТД("C30")*ЗначТД("C9"); // 195 629,0263750951
ЯчейкаТД("E30").Текст = ?(ЗначТД("A30")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D30")); // 1 956,290263750951
ЯчейкаТД("C31").Текст = ?(ЗначТД("A31")>ЗначТД("C11"),0,ЗначТД("C30")-ЗначТД("E30")); // 11 месяц
ЯчейкаТД("D31").Текст = ЗначТД("C31")*ЗначТД("C9"); // 189 281,7391856332
ЯчейкаТД("E31").Текст = ?(ЗначТД("A31")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D31")); // 1 892,817391856332
ЯчейкаТД("C32").Текст = ?(ЗначТД("A32")>ЗначТД("C11"),0,ЗначТД("C31")-ЗначТД("E31")); // 12 месяц
ЯчейкаТД("D32").Текст = ЗначТД("C32")*ЗначТД("C9"); // 182 870,9791242768
ЯчейкаТД("E32").Текст = ?(ЗначТД("A32")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D32")); // 1 828,709791242768
ЯчейкаТД("C33").Текст = ?(ЗначТД("A33")>ЗначТД("C11"),0,ЗначТД("C32")-ЗначТД("E32")); // 13 месяц
ЯчейкаТД("F21").Текст = ЗначТД("C6")*ЗначТД("C4"); // 5 803,577453212791
ЯчейкаТД("D33").Текст = ЗначТД("C33")*ЗначТД("C9"); // 176 396,1114623067
ЯчейкаТД("E33").Текст = ?(ЗначТД("A33")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D33")); // 1 763,961114623067
ЯчейкаТД("C34").Текст = ?(ЗначТД("A34")>ЗначТД("C11"),0,ЗначТД("C33")-ЗначТД("E33")); // 14 месяц
ЯчейкаТД("D34").Текст = ЗначТД("C34")*ЗначТД("C9"); // 169 856,495123717
ЯчейкаТД("E34").Текст = ?(ЗначТД("A34")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D34")); // 1 698,56495123717
ЯчейкаТД("C35").Текст = ?(ЗначТД("A35")>ЗначТД("C11"),0,ЗначТД("C34")-ЗначТД("E34")); // 15 месяц
ЯчейкаТД("D35").Текст = ЗначТД("C35")*ЗначТД("C9"); // 163 251,4826217414
ЯчейкаТД("E35").Текст = ?(ЗначТД("A35")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D35")); // 1 632,514826217414
ЯчейкаТД("C36").Текст = ?(ЗначТД("A36")>ЗначТД("C11"),0,ЗначТД("C35")-ЗначТД("E35")); // 16 месяц
ЯчейкаТД("D36").Текст = ЗначТД("C36")*ЗначТД("C9"); // 156 580,419994746
ЯчейкаТД("E36").Текст = ?(ЗначТД("A36")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D36")); // 1 565,80419994746
ЯчейкаТД("C37").Текст = ?(ЗначТД("A37")>ЗначТД("C11"),0,ЗначТД("C36")-ЗначТД("E36")); // 17 месяц
ЯчейкаТД("D37").Текст = ЗначТД("C37")*ЗначТД("C9"); // 149 842,6467414807
ЯчейкаТД("E37").Текст = ?(ЗначТД("A37")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D37")); // 1 498,426467414807
ЯчейкаТД("C38").Текст = ?(ЗначТД("A38")>ЗначТД("C11"),0,ЗначТД("C37")-ЗначТД("E37")); // 18 месяц
ЯчейкаТД("D38").Текст = ЗначТД("C38")*ЗначТД("C9"); // 143 037,4957556827
ЯчейкаТД("E38").Текст = ?(ЗначТД("A38")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D38")); // 1 430,374957556827
ЯчейкаТД("C39").Текст = ?(ЗначТД("A39")>ЗначТД("C11"),0,ЗначТД("C38")-ЗначТД("E38")); // 19 месяц
ЯчейкаТД("D39").Текст = ЗначТД("C39")*ЗначТД("C9"); // 136 164,2932600267
ЯчейкаТД("E39").Текст = ?(ЗначТД("A39")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D39")); // 1 361,642932600267
ЯчейкаТД("C40").Текст = ?(ЗначТД("A40")>ЗначТД("C11"),0,ЗначТД("C39")-ЗначТД("E39")); // 20 месяц
ЯчейкаТД("D40").Текст = ЗначТД("C40")*ЗначТД("C9"); // 129 222,3587394142
ЯчейкаТД("E40").Текст = ?(ЗначТД("A40")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D40")); // 1 292,223587394142
ЯчейкаТД("C41").Текст = ?(ЗначТД("A41")>ЗначТД("C11"),0,ЗначТД("C40")-ЗначТД("E40")); // 21 месяц
ЯчейкаТД("D41").Текст = ЗначТД("C41")*ЗначТД("C9"); // 122 211,0048735956
ЯчейкаТД("E41").Текст = ?(ЗначТД("A41")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D41")); // 1 222,110048735956
ЯчейкаТД("C42").Текст = ?(ЗначТД("A42")>ЗначТД("C11"),0,ЗначТД("C41")-ЗначТД("E41")); // 22 месяц
ЯчейкаТД("D42").Текст = ЗначТД("C42")*ЗначТД("C9"); // 115 129,5374691187
ЯчейкаТД("E42").Текст = ?(ЗначТД("A42")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D42")); // 1 151,295374691187
ЯчейкаТД("C43").Текст = ?(ЗначТД("A43")>ЗначТД("C11"),0,ЗначТД("C42")-ЗначТД("E42")); // 23 месяц
ЯчейкаТД("D43").Текст = ЗначТД("C43")*ЗначТД("C9"); // 107 977,2553905971
ЯчейкаТД("E43").Текст = ?(ЗначТД("A43")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D43")); // 1 079,772553905971
ЯчейкаТД("C44").Текст = ?(ЗначТД("A44")>ЗначТД("C11"),0,ЗначТД("C43")-ЗначТД("E43")); // 24 месяц
ЯчейкаТД("D44").Текст = ЗначТД("C44")*ЗначТД("C9"); // 100 753,4504912903
ЯчейкаТД("E44").Текст = ?(ЗначТД("A44")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D44")); // 1 007,534504912903
ЯчейкаТД("C45").Текст = ?(ЗначТД("A45")>ЗначТД("C11"),0,ЗначТД("C44")-ЗначТД("E44")); // 25 месяц
ЯчейкаТД("D45").Текст = ЗначТД("C45")*ЗначТД("C9"); // 93 457,4075429904
ЯчейкаТД("J20").Текст = -ЗначТД("C4"); // 
ЯчейкаТД("E45").Текст = ?(ЗначТД("A45")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D45")); // 934,574075429904
ЯчейкаТД("C46").Текст = ?(ЗначТД("A46")>ЗначТД("C11"),0,ЗначТД("C45")-ЗначТД("E45")); // 26 месяц
ЯчейкаТД("G21").Текст = ?(ЗначТД("A21")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I21").Текст = SUM("F21:F21",ЗначТД("D21")); // 2 500
ЯчейкаТД("I22").Текст = SUM("F22:F22",ЗначТД("D22")); // 0
ЯчейкаТД("H21").Текст = ?(bAND(ROUND((ЗначТД("A21")-1)/12,0)=(ЗначТД("A21")-1)/12,ЗначТД("A21")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J21").Текст = SUM("D21:H21"); // 2 500
ЯчейкаТД("D46").Текст = ЗначТД("C46")*ЗначТД("C9"); // 86 088,40416520753
ЯчейкаТД("G22").Текст = ?(ЗначТД("A22")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I23").Текст = SUM("F23:F23",ЗначТД("D23")); // 0
ЯчейкаТД("H22").Текст = ?(bAND(ROUND((ЗначТД("A22")-1)/12,0)=(ЗначТД("A22")-1)/12,ЗначТД("A22")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J22").Текст = SUM("D22:H22"); // 2 441,964225467872
ЯчейкаТД("E46").Текст = ?(ЗначТД("A46")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D46")); // 860,8840416520752
ЯчейкаТД("G23").Текст = ?(ЗначТД("A23")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I24").Текст = SUM("F24:F24",ЗначТД("D24")); // 0
ЯчейкаТД("H23").Текст = ?(bAND(ROUND((ЗначТД("A23")-1)/12,0)=(ЗначТД("A23")-1)/12,ЗначТД("A23")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J23").Текст = SUM("D23:H23"); // 2 383,348093190423
ЯчейкаТД("C47").Текст = ?(ЗначТД("A47")>ЗначТД("C11"),0,ЗначТД("C46")-ЗначТД("E46")); // 27 месяц
ЯчейкаТД("G24").Текст = ?(ЗначТД("A24")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I25").Текст = SUM("F25:F25",ЗначТД("D25")); // 0
ЯчейкаТД("H24").Текст = ?(bAND(ROUND((ЗначТД("A24")-1)/12,0)=(ЗначТД("A24")-1)/12,ЗначТД("A24")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J24").Текст = SUM("D24:H24"); // 2 324,145799590199
ЯчейкаТД("D47").Текст = ЗначТД("C47")*ЗначТД("C9"); // 78 645,71075364681
ЯчейкаТД("G25").Текст = ?(ЗначТД("A25")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I26").Текст = SUM("F26:F26",ЗначТД("D26")); // 0
ЯчейкаТД("H25").Текст = ?(bAND(ROUND((ЗначТД("A25")-1)/12,0)=(ЗначТД("A25")-1)/12,ЗначТД("A25")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J25").Текст = SUM("D25:H25"); // 2 264,351483053973
ЯчейкаТД("E47").Текст = ?(ЗначТД("A47")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D47")); // 786,4571075364681
ЯчейкаТД("G26").Текст = ?(ЗначТД("A26")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I27").Текст = SUM("F27:F27",ЗначТД("D27"));
ЯчейкаТД("H26").Текст = ?(bAND(ROUND((ЗначТД("A26")-1)/12,0)=(ЗначТД("A26")-1)/12,ЗначТД("A26")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J26").Текст = SUM("D26:H26"); // 2 203,959223352385
ЯчейкаТД("C48").Текст = ?(ЗначТД("A48")>ЗначТД("C11"),0,ЗначТД("C47")-ЗначТД("E47")); // 28 месяц
ЯчейкаТД("G27").Текст = ?(ЗначТД("A27")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I28").Текст = SUM("F28:F28",ЗначТД("D28")); // 0
ЯчейкаТД("H27").Текст = ?(bAND(ROUND((ЗначТД("A27")-1)/12,0)=(ЗначТД("A27")-1)/12,ЗначТД("A27")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J27").Текст = SUM("D27:H27"); // 2 142,963041053781
ЯчейкаТД("D48").Текст = ЗначТД("C48")*ЗначТД("C9"); // 71 128,59040797049
ЯчейкаТД("G28").Текст = ?(ЗначТД("A28")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I29").Текст = SUM("F29:F29",ЗначТД("D29")); // 0
ЯчейкаТД("H28").Текст = ?(bAND(ROUND((ЗначТД("A28")-1)/12,0)=(ЗначТД("A28")-1)/12,ЗначТД("A28")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J28").Текст = SUM("D28:H28"); // 2 081,356896932191
ЯчейкаТД("E48").Текст = ?(ЗначТД("A48")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D48")); // 711,2859040797049
ЯчейкаТД("G29").Текст = ?(ЗначТД("A29")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I30").Текст = SUM("F30:F30",ЗначТД("D30")); // 0
ЯчейкаТД("H29").Текст = ?(bAND(ROUND((ЗначТД("A29")-1)/12,0)=(ЗначТД("A29")-1)/12,ЗначТД("A29")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J29").Текст = SUM("D29:H29"); // 2 019,134691369385
ЯчейкаТД("C49").Текст = ?(ЗначТД("A49")>ЗначТД("C11"),0,ЗначТД("C48")-ЗначТД("E48")); // 29 месяц
ЯчейкаТД("G30").Текст = ?(ЗначТД("A30")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I31").Текст = SUM("F31:F31",ЗначТД("D31")); // 0
ЯчейкаТД("H30").Текст = ?(bAND(ROUND((ЗначТД("A30")-1)/12,0)=(ЗначТД("A30")-1)/12,ЗначТД("A30")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J30").Текст = SUM("D30:H30"); // 1 956,290263750951
ЯчейкаТД("D49").Текст = ЗначТД("C49")*ЗначТД("C9"); // 63 536,29885883741
ЯчейкаТД("G31").Текст = ?(ЗначТД("A31")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I32").Текст = SUM("F32:F32",ЗначТД("D32")); // 0
ЯчейкаТД("H31").Текст = ?(bAND(ROUND((ЗначТД("A31")-1)/12,0)=(ЗначТД("A31")-1)/12,ЗначТД("A31")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J31").Текст = SUM("D31:H31"); // 1 892,817391856332
ЯчейкаТД("E49").Текст = ?(ЗначТД("A49")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D49")); // 635,362988588374
ЯчейкаТД("G32").Текст = ?(ЗначТД("A32")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I33").Текст = SUM("F33:F33",ЗначТД("D33")); // 2 500
ЯчейкаТД("H32").Текст = ?(bAND(ROUND((ЗначТД("A32")-1)/12,0)=(ЗначТД("A32")-1)/12,ЗначТД("A32")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J32").Текст = SUM("D32:H32"); // 1 828,709791242768
ЯчейкаТД("C50").Текст = ?(ЗначТД("A50")>ЗначТД("C11"),0,ЗначТД("C49")-ЗначТД("E49")); // 30 месяц
ЯчейкаТД("G33").Текст = ?(ЗначТД("A33")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I34").Текст = SUM("F34:F34",ЗначТД("D34")); // 0
ЯчейкаТД("H33").Текст = ?(bAND(ROUND((ЗначТД("A33")-1)/12,0)=(ЗначТД("A33")-1)/12,ЗначТД("A33")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J33").Текст = SUM("D33:H33"); // 1 763,961114623067
ЯчейкаТД("D50").Текст = ЗначТД("C50")*ЗначТД("C9"); // 55 868,08439421299
ЯчейкаТД("G34").Текст = ?(ЗначТД("A34")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I35").Текст = SUM("F35:F35",ЗначТД("D35")); // 0
ЯчейкаТД("H34").Текст = ?(bAND(ROUND((ЗначТД("A34")-1)/12,0)=(ЗначТД("A34")-1)/12,ЗначТД("A34")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J34").Текст = SUM("D34:H34"); // 1 698,56495123717
ЯчейкаТД("E50").Текст = ?(ЗначТД("A50")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D50")); // 558,6808439421299
ЯчейкаТД("G35").Текст = ?(ЗначТД("A35")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I36").Текст = SUM("F36:F36",ЗначТД("D36")); // 0
ЯчейкаТД("H35").Текст = ?(bAND(ROUND((ЗначТД("A35")-1)/12,0)=(ЗначТД("A35")-1)/12,ЗначТД("A35")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J35").Текст = SUM("D35:H35"); // 1 632,514826217414
ЯчейкаТД("C51").Текст = ?(ЗначТД("A51")>ЗначТД("C11"),0,ЗначТД("C50")-ЗначТД("E50")); // 31 месяц
ЯчейкаТД("G36").Текст = ?(ЗначТД("A36")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I37").Текст = SUM("F37:F37",ЗначТД("D37")); // 0
ЯчейкаТД("H36").Текст = ?(bAND(ROUND((ЗначТД("A36")-1)/12,0)=(ЗначТД("A36")-1)/12,ЗначТД("A36")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J36").Текст = SUM("D36:H36"); // 1 565,80419994746
ЯчейкаТД("D51").Текст = ЗначТД("C51")*ЗначТД("C9"); // 48 123,18778494233
ЯчейкаТД("G37").Текст = ?(ЗначТД("A37")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I38").Текст = SUM("F38:F38",ЗначТД("D38")); // 0
ЯчейкаТД("H37").Текст = ?(bAND(ROUND((ЗначТД("A37")-1)/12,0)=(ЗначТД("A37")-1)/12,ЗначТД("A37")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J37").Текст = SUM("D37:H37"); // 1 498,426467414807
ЯчейкаТД("E51").Текст = ?(ЗначТД("A51")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D51")); // 481,2318778494233
ЯчейкаТД("G38").Текст = ?(ЗначТД("A38")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I39").Текст = SUM("F39:F39",ЗначТД("D39")); // 0
ЯчейкаТД("H38").Текст = ?(bAND(ROUND((ЗначТД("A38")-1)/12,0)=(ЗначТД("A38")-1)/12,ЗначТД("A38")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J38").Текст = SUM("D38:H38"); // 1 430,374957556827
ЯчейкаТД("C52").Текст = ?(ЗначТД("A52")>ЗначТД("C11"),0,ЗначТД("C51")-ЗначТД("E51")); // 32 месяц
ЯчейкаТД("G39").Текст = ?(ЗначТД("A39")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I40").Текст = SUM("F40:F40",ЗначТД("D40")); // 0
ЯчейкаТД("H39").Текст = ?(bAND(ROUND((ЗначТД("A39")-1)/12,0)=(ЗначТД("A39")-1)/12,ЗначТД("A39")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J39").Текст = SUM("D39:H39"); // 1 361,642932600267
ЯчейкаТД("D52").Текст = ЗначТД("C52")*ЗначТД("C9"); // 40 300,84220957896
ЯчейкаТД("G40").Текст = ?(ЗначТД("A40")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I41").Текст = SUM("F41:F41",ЗначТД("D41")); // 0
ЯчейкаТД("H40").Текст = ?(bAND(ROUND((ЗначТД("A40")-1)/12,0)=(ЗначТД("A40")-1)/12,ЗначТД("A40")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J40").Текст = SUM("D40:H40"); // 1 292,223587394142
ЯчейкаТД("E52").Текст = ?(ЗначТД("A52")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D52")); // 403,0084220957896
ЯчейкаТД("G41").Текст = ?(ЗначТД("A41")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I42").Текст = SUM("F42:F42",ЗначТД("D42")); // 0
ЯчейкаТД("H41").Текст = ?(bAND(ROUND((ЗначТД("A41")-1)/12,0)=(ЗначТД("A41")-1)/12,ЗначТД("A41")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J41").Текст = SUM("D41:H41"); // 1 222,110048735956
ЯчейкаТД("C53").Текст = ?(ЗначТД("A53")>ЗначТД("C11"),0,ЗначТД("C52")-ЗначТД("E52")); // 33 месяц
ЯчейкаТД("G42").Текст = ?(ЗначТД("A42")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I43").Текст = SUM("F43:F43",ЗначТД("D43")); // 0
ЯчейкаТД("H42").Текст = ?(bAND(ROUND((ЗначТД("A42")-1)/12,0)=(ЗначТД("A42")-1)/12,ЗначТД("A42")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J42").Текст = SUM("D42:H42"); // 1 151,295374691187
ЯчейкаТД("D53").Текст = ЗначТД("C53")*ЗначТД("C9"); // 32 400,27317846196
ЯчейкаТД("G43").Текст = ?(ЗначТД("A43")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I44").Текст = SUM("F44:F44",ЗначТД("D44")); // 0
ЯчейкаТД("H43").Текст = ?(bAND(ROUND((ЗначТД("A43")-1)/12,0)=(ЗначТД("A43")-1)/12,ЗначТД("A43")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J43").Текст = SUM("D43:H43"); // 1 079,772553905971
ЯчейкаТД("E53").Текст = ?(ЗначТД("A53")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D53")); // 324,0027317846196
ЯчейкаТД("G44").Текст = ?(ЗначТД("A44")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I45").Текст = SUM("F45:F45",ЗначТД("D45")); // 2 500
ЯчейкаТД("H44").Текст = ?(bAND(ROUND((ЗначТД("A44")-1)/12,0)=(ЗначТД("A44")-1)/12,ЗначТД("A44")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J44").Текст = SUM("D44:H44"); // 1 007,534504912903
ЯчейкаТД("C54").Текст = ?(ЗначТД("A54")>ЗначТД("C11"),0,ЗначТД("C53")-ЗначТД("E53")); // 34 месяц
ЯчейкаТД("G45").Текст = ?(ЗначТД("A45")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I46").Текст = SUM("F46:F46",ЗначТД("D46")); // 0
ЯчейкаТД("H45").Текст = ?(bAND(ROUND((ЗначТД("A45")-1)/12,0)=(ЗначТД("A45")-1)/12,ЗначТД("A45")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J45").Текст = SUM("D45:H45"); // 934,574075429904
ЯчейкаТД("D54").Текст = ЗначТД("C54")*ЗначТД("C9"); // 24 420,69845703379
ЯчейкаТД("G46").Текст = ?(ЗначТД("A46")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I47").Текст = SUM("F47:F47",ЗначТД("D47")); // 0
ЯчейкаТД("H46").Текст = ?(bAND(ROUND((ЗначТД("A46")-1)/12,0)=(ЗначТД("A46")-1)/12,ЗначТД("A46")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J46").Текст = SUM("D46:H46"); // 860,8840416520752
ЯчейкаТД("E54").Текст = ?(ЗначТД("A54")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D54")); // 244,2069845703379
ЯчейкаТД("G47").Текст = ?(ЗначТД("A47")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I48").Текст = SUM("F48:F48",ЗначТД("D48")); // 0
ЯчейкаТД("H47").Текст = ?(bAND(ROUND((ЗначТД("A47")-1)/12,0)=(ЗначТД("A47")-1)/12,ЗначТД("A47")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J47").Текст = SUM("D47:H47"); // 786,4571075364681
ЯчейкаТД("C55").Текст = ?(ЗначТД("A55")>ЗначТД("C11"),0,ЗначТД("C54")-ЗначТД("E54")); // 35 месяц
ЯчейкаТД("G48").Текст = ?(ЗначТД("A48")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I49").Текст = SUM("F49:F49",ЗначТД("D49")); // 0
ЯчейкаТД("H48").Текст = ?(bAND(ROUND((ЗначТД("A48")-1)/12,0)=(ЗначТД("A48")-1)/12,ЗначТД("A48")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J48").Текст = SUM("D48:H48"); // 711,2859040797049
ЯчейкаТД("D55").Текст = ЗначТД("C55")*ЗначТД("C9"); // 16 361,32798839134
ЯчейкаТД("G49").Текст = ?(ЗначТД("A49")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I50").Текст = SUM("F50:F50",ЗначТД("D50")); // 0
ЯчейкаТД("H49").Текст = ?(bAND(ROUND((ЗначТД("A49")-1)/12,0)=(ЗначТД("A49")-1)/12,ЗначТД("A49")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J49").Текст = SUM("D49:H49"); // 635,362988588374
ЯчейкаТД("E55").Текст = ?(ЗначТД("A55")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D55")); // 163,6132798839134
ЯчейкаТД("G50").Текст = ?(ЗначТД("A50")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I51").Текст = SUM("F51:F51",ЗначТД("D51")); // 0
ЯчейкаТД("H50").Текст = ?(bAND(ROUND((ЗначТД("A50")-1)/12,0)=(ЗначТД("A50")-1)/12,ЗначТД("A50")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J50").Текст = SUM("D50:H50"); // 558,6808439421299
ЯчейкаТД("C56").Текст = ?(ЗначТД("A56")>ЗначТД("C11"),0,ЗначТД("C55")-ЗначТД("E55")); // 36 месяц
ЯчейкаТД("G51").Текст = ?(ЗначТД("A51")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I52").Текст = SUM("F52:F52",ЗначТД("D52")); // 0
ЯчейкаТД("H51").Текст = ?(bAND(ROUND((ЗначТД("A51")-1)/12,0)=(ЗначТД("A51")-1)/12,ЗначТД("A51")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J51").Текст = SUM("D51:H51"); // 481,2318778494233
ЯчейкаТД("D56").Текст = ЗначТД("C56")*ЗначТД("C9"); // 8 221,363815062457
ЯчейкаТД("G52").Текст = ?(ЗначТД("A52")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I53").Текст = SUM("F53:F53",ЗначТД("D53")); // 0
ЯчейкаТД("H52").Текст = ?(bAND(ROUND((ЗначТД("A52")-1)/12,0)=(ЗначТД("A52")-1)/12,ЗначТД("A52")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J52").Текст = SUM("D52:H52"); // 403,0084220957896
ЯчейкаТД("E56").Текст = ?(ЗначТД("A56")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D56")); // 82,21363815062458
ЯчейкаТД("G53").Текст = ?(ЗначТД("A53")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I54").Текст = SUM("F54:F54",ЗначТД("D54")); // 0
ЯчейкаТД("H53").Текст = ?(bAND(ROUND((ЗначТД("A53")-1)/12,0)=(ЗначТД("A53")-1)/12,ЗначТД("A53")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J53").Текст = SUM("D53:H53"); // 324,0027317846196
ЯчейкаТД("C57").Текст = ?(ЗначТД("A57")>ЗначТД("C11"),0,ЗначТД("C56")-ЗначТД("E56")); // 37 месяц
ЯчейкаТД("G54").Текст = ?(ЗначТД("A54")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I55").Текст = SUM("F55:F55",ЗначТД("D55")); // 0
ЯчейкаТД("H54").Текст = ?(bAND(ROUND((ЗначТД("A54")-1)/12,0)=(ЗначТД("A54")-1)/12,ЗначТД("A54")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J54").Текст = SUM("D54:H54"); // 244,2069845703379
ЯчейкаТД("D57").Текст = ЗначТД("C57")*ЗначТД("C9"); // 0
ЯчейкаТД("G55").Текст = ?(ЗначТД("A55")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I56").Текст = SUM("F56:F56",ЗначТД("D56")); // 0
ЯчейкаТД("H55").Текст = ?(bAND(ROUND((ЗначТД("A55")-1)/12,0)=(ЗначТД("A55")-1)/12,ЗначТД("A55")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J55").Текст = SUM("D55:H55"); // 163,6132798839134
ЯчейкаТД("C14").Текст = SUM("D21:D57"); // сумма выплаченных процентов
ЯчейкаТД("G56").Текст = ?(ЗначТД("A56")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("I57").Текст = SUM("F57:F57",ЗначТД("D57")); // 0
ЯчейкаТД("H56").Текст = ?(bAND(ROUND((ЗначТД("A56")-1)/12,0)=(ЗначТД("A56")-1)/12,ЗначТД("A56")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 2 500
ЯчейкаТД("J56").Текст = SUM("D56:H56"); // 82,21363815062458
ЯчейкаТД("E57").Текст = ?(ЗначТД("A57")>ЗначТД("C11"),0,ЗначТД("C13")-ЗначТД("D57")); // 0
ЯчейкаТД("G57").Текст = ?(ЗначТД("A57")<=ЗначТД("C11"),ЗначТД("C4")*ЗначТД("C7"),0); // 0
ЯчейкаТД("C15").Текст = SUM("I21:I57"); // сумма переплаты по кредиту
ЯчейкаТД("H57").Текст = ?(bAND(ROUND((ЗначТД("A57")-1)/12,0)=(ЗначТД("A57")-1)/12,ЗначТД("A57")<=ЗначТД("C11")),ЗначТД("C4")*ЗначТД("C8"),0); // 0
ЯчейкаТД("J57").Текст = SUM("D57:H57"); // 0
ЯчейкаТД("C17").Текст = IRR("J20:J57",0)*12; // Полная стоимость кредита
ЯчейкаТД("D59").Текст = SUM("D21:D58"); // 
ЯчейкаТД("E59").Текст = SUM("E21:E58"); // 48 928,78831566079
ЯчейкаТД("F59").Текст = SUM("F21:F58"); // 249 999,9999999997
ЯчейкаТД("I59").Текст = SUM("I21:I58"); // 
ЯчейкаТД("J59").Текст = SUM("J21:J58"); // 48 928,78831566079

Этот код  в конфигураторе вставляем в тело функции “ РассчитатьНаСервере()” в модуле формы шаблона.

Вот так выглядит конечый результат:

Длинный код? Но, тем не менее, работает  исключительно быстро. Небольшая заминка только на тех функциях, которые вычисляют свое значение не в 1С, а выполняют код VBA  и просят установленный на компьютер EXCEL рассчитать  за нее значение, после чего передают его обратно в 1С. То есть некоторая 1С обертка для методов Excel.  В нашем примере всего одна такая функция IRR(ВСД)  (http://msoffice-prowork.com/spravka-ms-excel/finansovye-funkcii-financial/vsd-irr/). IRR возвращает внутреннюю ставку доходности для ряда потоков денежных средств, представленных их численными значениями. Так как эта функция вызывается всего 1 раз, то задержка не заметна. Плюсы такого подхода, что мы можем рассчитать сложные функции, алгоритм эмуляции которых не очевиден. Минусы – быстродействие и необходимость установленного на компьютер Excel.  К счастью большинство расчетов обходится более простыми функциями.

Получившаяся форма хорошо знакома пользователям и при нажатии кнопки "Рассчитать" расчет соответствует расчету в Excel c высокой точностью.

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

Попробую перечислить преимущества интеграции расчета в 1С, как это видится мне: 
1. Не нужно открывать дополнительное окно, весь расчет делается на закладке того документа (справочника) где он нужен и хранится в нем же (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
2. Интеграция с данными в 1С. Автоматическая загрузка курса, банковских ставок, стоимости услуг на текущие дату и прочее сможет значительно ускорить работу. На основании расчета в 1С могут создаваться новые документы, например спецификации (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
3. Скрытие формул от конечного пользователя. 
4. Возможность добавления программной логике по контролю допустимости вводимых значений во избежание ошибок (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
5. Возможность программного скрытия части расчета и параметров в зависимости от набора прав (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 
6. Возможность программного добавления (скрытия) областей в зависимости от условий расчета. (Требует дополнительной работы программиста по внедрению кода обработки в 1С). 

Вот пример кода скрывающего неиспользуемые столбцы: 

&НаСервере
Процедура КоличествоЛистовКПечатиПриИзмененииНаСервере()
	Для I=1 по 10-Объект.КоличествоЛистовКПечати цикл
		Область = Лист1.Область(,12-I , ,12-I );
		Область.Видимость = Ложь;
	КонецЦикла;
	Для I=10-Объект.КоличествоЛистовКПечати+1 по 10 цикл
		Область = Лист1.Область(,12-I , ,12-I );
		Область.Видимость = Истина;
	КонецЦикла;
КонецПроцедуры

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


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

Генератор работает пока только в конфигурациях на управляемых формах на платформе V8.3.6 +.  Код генератора полностью открыт. Для работы нужен Excel 97+ для Windows.

Период бесплатной техподдержки составляет 6 месяцев.

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

Внимание: В Ваших расчетах могут встретиться вставки на Visual Basic. Конвертация таких расчетов в код 1С в текущей версии пока не производится. Как правило, код достаточно легко приспосабливается к генерируемому коду расчета 1С, но это потребует вмешательства программиста.

Изменения в  версиях:

В ВЕРСИИ 2.11 Добавлена возможность сохранять и загружать данные проекта. Исправлена работа с процентами. Добавлены шаблоны справочника и документа

В ВЕРСИИ 1.15 обеспечена возможность работы шаблона в управляемых и неуправляемых формах, начиная с версии платформы 8.2.

 

Другие разработки автора:

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.4.11.98, 2.4.11.65, 2.4.8.63

Excel расчет

См. также

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    231553    1048    896    

992

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

11100 руб.

29.10.2014    216049    651    526    

456

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", МагнитЭкспресс (быв.Казань-Экспресс), "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом", "Золотое Яблоко" в документы "Отчет комиссионера (агента) о продажах" и другие, работает в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

2400 руб.

12.08.2021    34975    329    66    

150

Маркетплейсы Загрузка и выгрузка в Excel Программист Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Загрузка данных отчета о реализации и продаже товаров из сервиса Яндекс.Маркета «Беру» в 1С из Отчетов Excel для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3; Управление нашей фирмой, редакция 3.0 и Розница, редакция 3.0 в документ «Отчет комиссионера о продажах».

4800 руб.

09.12.2020    24850    245    1    

106

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 19.09.2024, версия 9.9 - 9.12)

15600 руб.

20.11.2015    154805    376    377    

510

Банковские операции Обмен с интернет-банком Загрузка и выгрузка в Excel Программист Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Обработка создания файла по стандарту обмена с системами "Клиент банка" kl_to_1c.txt Формат файла обмена Российская Федерация, версия 1.03 При восстановлении учета в случае отсутствия в 1с банковских выписок (например, р/с в банке закрыт в связи с банкротством и доступ к выгрузке из клиент-банка невозможен), можно запросить у банка выписку за период в формате Excel. С помощью этой обработки создается файл формата 1CClientBankExchange, в 1с77 он назывался kl_to_1c.txt который загружается штатными средствами в 1с8. При этом будут созданы загружаемые контрагенты и их р/с.

3840 руб.

19.04.2019    43637    146    52    

81
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gubanoff 63 17.11.16 11:45 Сейчас в теме
Свежее, интересное решение. За новизну респект. Объем работы проделан тоже немалый. Но остается главный вопрос - зачем это нужно? Зачем переносить в 1С то, что в экселе работает и всех устраивает? Тем более в экселе, я так понимаю, гораздо легче будет что-то поправить, чем в 1С (скопировать столбцы, изменить формулы и т.п.). Пока представляется только как помощник переноса неких форм в 1С, не более.
2. milkers 2909 17.11.16 13:19 Сейчас в теме
(1) gubanoff, Попробую перечислить преимущества, как это видится мне:
1. Не нужно открывать дополнительное окно, весь расчет делается на закладке того документа (справочника) где он нужен и хранится в нем же. (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
2. Интеграция с данными в 1С. Автоматическая загрузка курса, банковских ставок, стоимости услуг на текущие дату и прочее сможет значительно ускорить работу. На основании расчета в 1С могут создаваться новые документы, например спецификации (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
3. Скрытие формул от конечного пользователя.
4. Возможность добавления программной логике по контролю допустимости вводимых значений во избежание ошибок (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
5. Возможность программного скрытия части расчета и параметров в зависимости от набора прав (Требует дополнительной работы программиста по внедрению кода обработки в 1С).
6. Возможность программного добавления (скрытия) областей в зависимости от условий расчета.(Требует дополнительной работы программиста по внедрению кода обработки в 1С).

Например, при добавлении операций на других станках появятся новые области с новыми параметрами.
При добавлении в расчет нескольких видов продукции появятся новые столбцы. При этом расчет в любом случае
будет работать корректно.
Список можно продолжать в зависимости от богатства фантазии. Но из списка видно, что основные преимущества дает именно интеграция в решение 1С.
dreadlord; +1 Ответить
4. milkers 2909 22.11.16 19:18 Сейчас в теме
(1) По поводу редактирования. Я уже много раз переделывал изначальный расчет, ради которого это все и затевалось. Добавлялись новые возможные виды технологических операций, колонки с вариантами. Все для того, чтоб добиться универсальности. Переделывать было намного легче, чем Вы думаете. Изменения вносились в файл экселя, после чего он обрабатывался генератором. Причем изменения вносились специалистом, который и создал изначальный расчет.
dreadlord; +1 Ответить
3. SunShinne 633 22.11.16 14:59 Сейчас в теме
непонятно зачем но круто
5. dreadlord 29.11.16 10:47 Сейчас в теме
Отличное решение, особенно в части возможности юзания оперативных данных из 1С. Респект и уважуха. Плюс адназначна
6. Светлый ум 408 11.12.16 16:38 Сейчас в теме
Возникала такая задача пару лет назад - ценник оправданный
+1
7. Probot1c 04.02.17 06:43 Сейчас в теме
ДАвно пора скрестить 1с и офис
8. Serg_Tangatarov 108 18.11.18 10:52 Сейчас в теме
Решение однозначно достойно внимания. Но мы пошли еще дальше, написали табличный редактор в 1С, скоро буду выкладывать статью. Ниже ссылка на вебинар с решением, после 30 минуты буду подробно показывать работу этого редактора, называется табула. Excel там технически отсутствует, но есть табличный редактор сходный по функционалу с Excel.
https://youtu.be/QYztci2dcAE
9. German_Tagil 43 26.12.18 10:19 Сейчас в теме
мда у меня возникла задача быстро посчитать колонку в табличном документе не выгружая в Exel
- надо было сверить данные
И как всегда одно тянет за собой другое- я оказался здесь
вопрос

(8) Посмотреть бы как это работает
10. Serg_Tangatarov 108 26.12.18 14:25 Сейчас в теме
(9) могу провести демонстрацию, но лучше в январе :-)
Оставьте свое сообщение