• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

алгоритм расчета

  • Автор темы Guest
  • Дата начала
G

Guest

Для Каа или еще кого-нибудь умного. Подскажите, пожалуйста, змагаюсь с 1С 7,7. Начало истории находится на
https://codeby.net/threads/20795.html?pi...amp;#entry95606. Для расчета пишу вот такой алгоритм:
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура,Номенклатура,2);
БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,"СМ");
А=(БухИт.ДО());
БухИт.ИспользоватьСубконто(ВидыСубконто.ВидыНоменклатуры,ВидНоменклатуры,1);
БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,"СМ");
В=(БухИт.ДО());
Доля=А/В;
БухИт.ИспользоватьСубконто(ВидыСубконто.ВидыНоменклатуры,ВидНоменклатуры,1);
БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,"40");
Сумма=Окр((Доля*(БухИт.ДО())),2,1);
Стоимость=Окр(Сумма/?(Количество=1,2,Количество),2,1);
КонецЦикла;
КонецЦикла;


Но, к сожалению, не берутся данные со счета 40, а в ячейку вписываются цифры как на забалансовом СМ . Здесь явно что-то не так. :D Помогите, пожалуйста.
 
K

kaa

<!--QuoteBegin-Катрин+4:02:2008, 17:07 -->
<span class="vbquote">(Катрин @ 4:02:2008, 17:07 )</span><!--QuoteEBegin-->БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,"СМ");
[snapback]96470" rel="nofollow" target="_blank[/snapback]​
[/quote]
Наверно стоит указать счет или список счетов по которым строится запрос
 
G

Guest

Для: kaa
Да, я забыла написать, что я пробовала и таким методом, через "СчетПоКоду":

БухИт.ИспользоватьСубконто(ВидыСубконто.Номенклатура,Номенклатура,2);
БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,СчетПоКоду ("СМ"));
А=(БухИт.ДО("С"));
БухИт.ИспользоватьСубконто(ВидыСубконто.ВидыНоменклатуры,ВидыНоменклатуры,2);
БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,СчетПоКоду ("СМ"));
В=(БухИт.ДО("С"));
Доля=А/В;
БухИт.ИспользоватьСубконто(ВидыСубконто.ВидыНоменклатуры,ВидыНоменклатуры,2);
БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),СчетПоКоду ("40"));
Сумма=Окр((Доля*(БухИт.ДО("С"))),2,1);
Стоимость=Окр(Сумма/?(Количество=1,2,Количество),2,1);

Но здесь вообще, толком ничего не получается:
Либо пишет, что В=0 (а на ноль делить нельзя) или вообще сам результата равен 0. :D
 
K

kaa

Объясни толком что надо, и какими счетами оперируешь
 
G

Guest

Значит, объясняю, что надо:
Пишу диплом тема "автоматизация расчета фактической себестоимости". Затраты на готовую продукцию распределяются пропорционально израсходованным материалам. Я сделала:
1. Для учета израсходованных материалов на конкретную готовую продукцию создала забалансовый счет СМ (Субконто1-Вид Номенклатуры, Субконто2-Номенклатура). (В прошлый раз, ты (или вы), Каа, посоветовал мне при проведении выпуска продукции брать количество материалов из калькуляции, а себестоимость со счета затрат , но в нашей программе не предусмотрен ввод калькуляции и нормы выработки, поэтому мне все равно пришлось использовать забалансовый счет СМ.)
2. Создала акт на списание материалов, который кроме прочих проводок формирует проводки по забалансу СМ по нужной продукции.
3. Создала документ на передачу готовой продукции из производства, в котором и должно происходить распределение. В документе создала кнопку "Рассчитать", при выполнении которой должны заполниться столбцы "Сумма" и "Стоимость" в табличной части.
Сумма затрат по конкретной продукции= (Д*цензура*овый оборот по счету СМ по конкретной продукции/Д*цензура*овый оборот по счету СМ по виду производства, к которому относится данная продукция) * Д*цензура*овый оборот по счету 40 по данному виду производства.
Стоимость = Сумма/Количество
Алгоритм же этого расчета выше я, собственно, и пыталась изобразить.

P.S. Не знаю, поймешь или не поймешь мое «произведение искусства», но, все равно, спасибо за подсказки.
 
K

kaa

Табло = СоздатьОбъект("ТаблицаЗначений");
СписокНом = СоздатьОбъект("СписокЗначений");
СписокВид = СоздатьОбъект("СписокЗначений");
Табло.Выгрузить(СписокНом,,,"Номенклатура");
Табло.Выгрузить(СписокВид,,,"ВидыНоменклатуры");



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

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

БухИт = "";
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСУбконто(ВидыСубконто.Номенклатура,СписокВид);
БухИт.ВыполнитьЗапрос(НачМЕсяца(ДатаДок),КонМесяца(ДатаДок),"40");
БухИт.ВыбратьСубконто();
Пока БИ.ВыбратьСубконто()=1 Цикл
Стр="";
Если Табло.НайтиЗначение(БИ.Субконто(1),Стр,"ВидыНоменклатуры")=1 Тогда
Табло.ПолучитьСтрокуПоНомеру(Стр);
Доля =Табло.ДОНом/(?(Табло.ДОВид=0,1,Табло.ДОВид));
Табло.Сумма=Окр((Доля*(БухИт.ДО("С"))),2,1);
Табло.Стоимость=Окр(Табло.Сумма/?(Табло.Количество=1,2,Табло.Количество),2,1);
Иначе
Сообщить("Пристегните ремни и завите программиста!!","!!!");
КонецЕсли;
КонецЦикла;

Табло.УдалитьКолонку("ДОНом");
Табло.УдалитьКолонку("ДОВид");
УдалитьСтроки();
ЗагрузитьТабличнуюЧасть(Табло);

где-то так
 
G

Guest

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

Zab

Для: Катрин на самом деле в таблицах значений нет ничего страшного. Хуже, когда к ним привыкаешь, начинаешь пользовать к месту и не к месту. Не паникуй, и попробуй. Далее, думается мне, <!--QuoteBegin-Катрин+4:02:2008, 09:07 -->
<span class="vbquote">(Катрин @ 4:02:2008, 09:07 )</span><!--QuoteEBegin-->Если БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,"40") = 0 Тогда
Сообщить("А фигушки, по сороковому счету запрос не выполнился!");
Возврат;
КонецЕсли;
[snapback]96470" rel="nofollow" target="_blank[/snapback]​
[/quote] надо так попробовать сделать... и начать разбираться, собсвенно, почему "по сороковому счету запрос не выполнился" :)
 
K

kaa

<!--QuoteBegin-Катрин+10:02:2008, 06:57 -->
<span class="vbquote">(Катрин @ 10:02:2008, 06:57 )</span><!--QuoteEBegin-->(хоть я и повставляла в документ и таблицы значений и списки значений)
[snapback]97384" rel="nofollow" target="_blank[/snapback]​
[/quote]
в докумет вставлять не надо эти объекты создаются в модуле
 
G

Guest

А когда не вставляешь, то выдает, что типа идентификатор столбца не совпадает (Номенклатура). Я уже и идентификатор меняла, но все равно не помогает.
 
K

kaa

Когда выгружаешь табличную часть в тз формируются колонки с идентификаторами как в табличной части документа, т.е. если в таб части реквизит имеет идентификатор Товар то в тз обращатся нужно Табло.Товар, если Номенклатура - Табло.Номенклатура и т.д. Действительно для всех реквизитов табличной части. И надо учесть что в тз могут быть еще колонки по тем или иным причинам не видимы в документе.
 
G

Guest

Для: kaa
Для: Zab
Всем привет и спасибо за подмогу и поддержку (прошу прощения, улучшить репутацию, к сожалению, не могу - мне не хватает сообщений). Но если интересно, то расскажу, что моя история окончилась довольно-таки счастливо. Вобщем мой самый первый алгоритм был почти правильным, только номера счетов в командах (БухИт.ВыполнитьЗапрос(НачМесяца(ДатаДок),КонМесяца(ДатаДок),,"СМ"):D нужно было ставить не после запятых, а до них. И процесс пошел :) .
P.S. Но без ваших подсказок у меня все равно ничего не получилось бы!!!
 
Z

Zab

Очень приятно, когда твои старания не пропадают даром :) Удачной защиты
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!