Имя: Пароль:
1C
 
Сколько можно взять за такой отчет?
0 zaimon
 
08.02.07
13:09
//=========================================================
//Вызывается при двойном щелчке по списку
Процедура СЗКонтрагент_ПриВыборе()
   Если СЗКонтрагент.РазмерСписка() > 0 Тогда
       ВыбранноеЗначение = СЗКонтрагент.ПолучитьЗначение(СЗКонтрагент.ТекущаяСтрока());
       ОткрытьФорму(ВыбранноеЗначение.ТекущийЭлемент());
   КонецЕсли;
КонецПроцедуры

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

//=========================================================
Процедура СЗКонтрагент_УдалитьЗначение()
   Если СЗКонтрагент.ТекущаяСтрока() > 0 Тогда
       СЗКонтрагент.УдалитьЗначение(СЗКонтрагент.ТекущаяСтрока());
   КонецЕсли;
КонецПроцедуры

//=========================================================
Процедура СЗКонтрагент_УдалитьВсе()
   СЗКонтрагент.УдалитьВсе();
КонецПроцедуры

//=========================================================
Процедура СЗКонтрагент_МножественныйВыбор()
   ОткрытьПодбор("Справочник.Контрагенты", "Основная",,1);
КонецПроцедуры

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

//=========================================================
Процедура СЗКонтрагент_ЗначениеВверх()
   Если СЗКонтрагент.ТекущаяСтрока() > 1 Тогда
       СЗКонтрагент.СдвинутьЗначение(-1, СЗКонтрагент.ТекущаяСтрока());
   КонецЕсли;
КонецПроцедуры

//=========================================================
Процедура СЗКонтрагент_ЗначениеВниз()
   Если (СЗКонтрагент.ТекущаяСтрока() > 0) И (СЗКонтрагент.ТекущаяСтрока() < СЗКонтрагент.РазмерСписка()) Тогда
       СЗКонтрагент.СдвинутьЗначение(1, СЗКонтрагент.ТекущаяСтрока());
   КонецЕсли;
КонецПроцедуры

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Обрабатывать НеПомеченныеНаУдаление;
   |Фирма = Регистр.ОстаткиТМЦ.Фирма;
   |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
   |Склад = Регистр.ОстаткиТМЦ.Склад;
   //|Регистр.ОстаткиТМЦ.ТекущийДокумент.Реализация.Склад,
   //|    Регистр.ОстаткиТМЦ.ТекущийДокумент.РеализацияРозница.Склад,
   //|    Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Склад,
   //|    Регистр.ОстаткиТМЦ.ТекущийДокумент.ВозвратОтПокупателя.Склад;
   |ТекущийДокумент = Регистр.ОстаткиТМЦ.ТекущийДокумент.Реализация.ТекущийДокумент,
   |    Регистр.ОстаткиТМЦ.ТекущийДокумент.РеализацияРозница.ТекущийДокумент,
   |    Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.ТекущийДокумент,
   |    Регистр.ОстаткиТМЦ.ТекущийДокумент.ВозвратОтПокупателя.ТекущийДокумент;
   |Количество = Регистр.ОстаткиТМЦ.Количество;
   |Контрагент = Регистр.ОстаткиТМЦ.ТекущийДокумент.Реализация.Контрагент, Регистр.ОстаткиТМЦ.ТекущийДокумент.РеализацияРозница.Контрагент, Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Контрагент, Регистр.ОстаткиТМЦ.ТекущийДокумент.ВозвратОтПокупателя.Контрагент, Регистр.ОстаткиТМЦ.ТекущийДокумент.ВозвратПоставщику.Контрагент;
   |ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;
   |Функция НачОстат = НачОст(Количество);
   |Функция КоличествоРасход = Расход(Количество) когда(((ТекущийДокумент.Вид()=""Реализация"")и (не(Контрагент в СЗКонтрагент)))или((ТекущийДокумент.Вид()=""РеализацияРозница"")и (не(Контрагент в СЗКонтрагент))));
   |Функция КоличествоРасходФилиалы = Расход(Количество) когда(((ТекущийДокумент.Вид()=""Реализация"")и (Контрагент в СЗКонтрагент))или((ТекущийДокумент.Вид()=""РеализацияРозница"")и (Контрагент в СЗКонтрагент)));
   |Функция КоличествоПриход = Приход(Количество)когда(ТекущийДокумент.Вид()=""ПоступлениеТМЦ"");
   |Функция ВозвратИЗРозн = Приход(Количество)когда((ТекущийДокумент.Вид()=""ВозвратОтПокупателя"")и (не(Контрагент в СЗКонтрагент)));
   |Функция ВозвратВнутри = Приход(Количество)когда((ТекущийДокумент.Вид()=""ВозвратОтПокупателя"")и (Контрагент в СЗКонтрагент));
   |Функция КонОстат = КонОст(Количество);
   |Группировка Фирма;
   |Группировка Склад;
   |Группировка Номенклатура без групп;
//    |Группировка Контрагент без групп;
   |Условие(Фирма в ВыбФирма);
   |Условие(Номенклатура в ВыбНоменклатура);
///    |Условие(Склад.РозничныйСклад=0);
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Фирма
       //Таб.ВывестиСекцию("Фирма");
       Пока Запрос.Группировка(2) = 1 Цикл
           // Заполнение полей Склад
           //Таб.ВывестиСекцию("Склад");
           Пока Запрос.Группировка(3) = 1 Цикл
               // Заполнение полей Номенклатура
               //Таб.ВывестиСекцию("Номенклатура");
           //    Пока Запрос.Группировка(4) = 1 Цикл
                   // Заполнение полей Контрагент
                   Попытка
                       печАдрес=Запрос.Контрагент.ЮрФизЛицо.ФактАдрес;
                   Исключение
                       печАдрес=Запрос.Контрагент.ОсновнойДоговор;
                   КонецПопытки;
                   Таб.ВывестиСекцию("Контрагент");
           //    КонецЦикла;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   // Заполнение полей "Итого"
   //Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
   
КонецПроцедуры


3 Часа моей работы. По меркам маленького города.
2 ASV
 
08.02.07
13:10
уже не возьмешь, ты его бесплатно отдал всем
3 Эльниньо
 
08.02.07
13:11
(0) А сколько заплатишь за анализ твоей нетленки?
4 ASV
 
08.02.07
13:11
(0) он работает вообще??
5 Ёпрст2
 
08.02.07
13:12
(0) Имхо, как бы еще и самому доплачивать не пришлось бы ...
6 Magic74
 
08.02.07
13:12
Чтобы не парится 1строка - 1 минута, а там исходя из стоимости часа в городе - достаточно честно
7 Midaw
 
08.02.07
13:13
Страна, Край?
8 колодина
 
08.02.07
13:13
(6) ничего себе расчет....
9 Ёпрст2
 
08.02.07
13:14
+5 Особенно порадовало двигать значения в списке для фильтра ... вот только накуа ?
И зачем писать ТекущийДокумент нужных видов....?
10 mikecool
 
08.02.07
13:15
(0) возьми с полки пирожок... (с) не помню откуда :-)
11 Magic74
 
08.02.07
13:15
(8) Я не утверждаю, что это идеал :))))
Ес-но не стоит это озвучивать клиенту ибо некоторые 100 строк стоят дороже другой 1000
12 КонецЦикла
 
08.02.07
13:16
(6) Под столом
13 Midaw
 
08.02.07
13:17
(6) тогда надо добавить ещё комментов! )
14 КонецЦикла
 
08.02.07
13:17
(0) Возьми 15-20 баксов
Непонятна цель отчета вообще...
15 Magic74
 
08.02.07
13:19
(12)Ну ладно Вам набросились - я просто предложил самую простую схему которую видел - согласен не идеал, но иногда проще пользоваться ей
16 Midaw
 
08.02.07
13:20
(14) называется из области, надо ) а чё скажу, то и надо.. ну будет значит! ) падумаешь ещё "один" отчетик нарисую красивый )
17 Advan
 
08.02.07
13:20
(0)Бери больше!
18 fabrikant
 
08.02.07
13:21
(6)  Я сегодня весь день голову ломал над одной проблемой. Итог 78 строк рабочего кода. Значит я никуа не заработал?
Может пустых циклов накуячить?
19 Ирен
 
08.02.07
13:21
500 рублей
20 DrShad
 
08.02.07
13:22
(0) а он тока адреса выдает?
21 Midaw
 
08.02.07
13:22
(19) как можно округлять в меньшую сторону.. (: или там тарелка супа умножается на три часа?
22 zaimon
 
08.02.07
13:22
(19) 500 рублей, да наш бывший хапуга 1Сник по совместительству все 3000 взял бы. Даже жако.
23 Midaw
 
08.02.07
13:24
(22) а знаешь почему жалко? потому что взялся за некчомную задачу, неоценённую по реальной стоимости )
24 Ирен
 
08.02.07
13:25
(22) ну дак и ты 3000 тогда возьми. кто мешает то?
25 Advan
 
08.02.07
13:27
(22)ТОгда ты бери 3500!!!
26 Midaw
 
08.02.07
13:30
кстати, с некоторых пор я знаю как определяют стоимость работы 1с-ника. тот чувак сделал за 3000, а этот гад с меня берёт 6000. мне сегодня сказал один человек, что программу писать четыре месяца.. из той же области ) а я то парусь с вычислениями..
27 zaimon
 
08.02.07
13:33
Боюсь что потом кто нибудь скажет вот хапуга! Ваще обнаглел. Я просто никогда этим не занимался, на дяденьку все работаю.
28 Ирен
 
08.02.07
13:34
(27) это знакомые или нет? еще и от этого цена зависит иногда:)
29 mergan
 
08.02.07
13:37
два пенса... и не пенсем больше
30 zaimon
 
08.02.07
13:39
(28) Нет!
31 Ц_У
 
08.02.07
13:41
Бери больше кидай дальше...(с)
32 Ирен
 
08.02.07
13:42
(30) все зависит от того, сколько за это готовы они заплатить. реально отчет стоит 1000-1500.. не больше.. но если они привыкли 3000 платить, то это уже решать тебе.
33 Advan
 
08.02.07
13:43
(27)Ну и? - пусть говорят - они просто завидуют.
34 Эльниньо
 
08.02.07
13:44
(6)
Если
А = Б
Тогда
...
и так далее.
35 Magic74
 
08.02.07
13:47
(18) см (11) у меня тоже такое было - зависит от сложности задачи, можно еще коэффициент ввести на который умножать кол-во строк, который будет отображать сложность)))