|   |   | 
| 
 | v7: Глюки (?) функции Счётчик() в запросе | ☑ | ||
|---|---|---|---|---|
| 0
    
        akovpashko 12.08.13✎ 15:39 | 
        Пишу обработку, которая делает документ возврата на весь товар склада. Естессно если на складе товара нету, незачем и создавать пустой документ. Хочу для этого использовать Счётчик().
 Код запроса: ЗапросОстатков = СоздатьОбъект("Запрос"); Если выбДатаОстатков < ПолучитьДатуТА() Тогда ТекстЗапроса = "Период с выбДатаОстатков по выбДатаОстатков;"; Иначе ТекстЗапроса = ""; КонецЕсли; ТекстЗапроса = ТекстЗапроса + "//{{ЗАПРОС(ОстатокВнутрСкладКлиента) |СкладКлиента = Регистр.ОстаткиНаВнутрСкладах.СкладКлиента; |ВнутрСклад = Регистр.ОстаткиНаВнутрСкладах.ВнутрСклад; |Товар = Регистр.ОстаткиНаВнутрСкладах.Товар; |Количество = Регистр.ОстаткиНаВнутрСкладах.количество; |Функция КоличествоКонОст = КонОст(Количество); |Группировка Товар без групп; |Условие(СкладКлиента = выбСкладКлиента); |Условие(ВнутрСклад = выбВнутрСкладКлиента); |"//}}ЗАПРОС Дальше по результатам запроса формирую документ. Если этой обработкой сформировать документ возврата на определенную дату, провести его, а потом еще раз сформироватьь на ту же или более позднюю дату, получаю тот же документ, только без количества товара. Выгрузка запроса в ТЗ и просмотр ТЗ показывает тот же товар, но с нулями в колонке КоличествоКонОст. Убираю из запроса Счётчик() и запрос чудесным образом ничего не возвращает, как по идее и должно быть. Релиз 7.7.027 + MSSQL 2005 + патч (секретный релиз). Как задачу реализовать по-другому знаю. Вопрос: это глюк платформы, секретного релиза или мой провтык? | |||
| 1
    
        skunk 12.08.13✎ 15:43 | 
        ты же документ провел и списал товар ... разве нет?     | |||
| 2
    
        Ёпрст гуру 12.08.13✎ 15:46 | 
        (0) 
 1.в запросе (0) нет функции Счётчик 2.ты не в курсе, что она считает. | |||
| 3
    
        Ёпрст гуру 12.08.13✎ 15:47 | 
        +2
 3. При возврате товара, остаток на складе увеличиться в 2 раза. | |||
| 4
    
        Ёпрст гуру 12.08.13✎ 15:48 | 
        +3
 4. чего курил автор, предстоит разобраться врачам. | |||
| 5
    
        akovpashko 12.08.13✎ 16:09 | 
        (1) вот в этом и вопрос. Я документ провел и списал, допустим, 7 единиц одного и 1 единицу второго. После этого запрос возвращает две строки: первый и второй товар, но без количества. 
 (2) Прошу прощения. Запрос скопировал уже когда сделал по-другому. Оригинал запроса: Если выбДатаОстатков < ПолучитьДатуТА() Тогда ТекстЗапроса = "Период с выбДатаОстатков по выбДатаОстатков;"; Иначе ТекстЗапроса = ""; КонецЕсли; ТекстЗапроса = ТекстЗапроса + "//{{ЗАПРОС(ОстатокВнутрСкладКлиента) |СкладКлиента = Регистр.ОстаткиНаВнутрСкладах.СкладКлиента; |ВнутрСклад = Регистр.ОстаткиНаВнутрСкладах.ВнутрСклад; |Товар = Регистр.ОстаткиНаВнутрСкладах.Товар; |Количество = Регистр.ОстаткиНаВнутрСкладах.количество; |Функция КоличествоКонОст = КонОст(Количество); |Функция Счётчик = Счётчик(); |Группировка Товар без групп; |Условие(СкладКлиента = выбСкладКлиента); |Условие(ВнутрСклад = выбВнутрСкладКлиента); |"//}}ЗАПРОС И да, я не совсем уверен, что знаю, что она считает. В СП и описании языка толком не пишут. Буду плагодарен за пояснение или ссылку на нормальное описание. (3) это не совсем понял. Там реализован учет товара, который передали клиенту с основного склада, но он еще его не продал. Вернуть нужно назад на основной склад. (4) к счастью не курю :) | |||
| 6
    
        akovpashko 12.08.13✎ 16:10 | 
        +5 (1) 7 единиц одного и 1 единица второго товара - это и был весь остаток на складе до возврата.     | |||
| 7
    
        Ёпрст гуру 12.08.13✎ 16:13 | 
        (5) 
 Прочитай описание функции счётчик, в СП.. много думай. | |||
| 8
    
        Ёпрст гуру 12.08.13✎ 16:13 | 
        Это не количество записей по группировке запроса, если что.     | |||
| 9
    
        пипец 12.08.13✎ 16:14 | 
        чоу там гадать - счетчик считает количество строк в выводе результата     | |||
| 10
    
        Grobik 12.08.13✎ 16:14 | 
        >> к счастью не курю :)
 К несчастью. | |||
| 11
    
        Ёпрст гуру 12.08.13✎ 16:15 | 
        И функция Счётчик в этом запросе.. ни на что не влияет  вообще.     | |||
| 12
    
        Ёпрст гуру 12.08.13✎ 16:15 | 
        (9) не угадал.     | |||
| 13
    
        пипец 12.08.13✎ 16:19 | 
        (12) скажем так, не так выразился ... а по сути однофигственно если не придираться к словам ... ;))     | |||
| 14
    
        jarett 12.08.13✎ 16:19 | 
        Простите, функция Счётчик() просто случайно конструктором вставлена? Ну чисто поржать...     | |||
| 15
    
        akovpashko 12.08.13✎ 16:20 | 
        (7) (8) вот вы, старожилы форума, вредные иногда бываете :)
 Из СП: "Счётчик (Counter) - количество записей, вошедших в выборку, <Параметр> - не нужен;" Логично подумать, что там количество всех записей, которые попали в выборку по указанным условиям без группировки. Следует ли из этого, что для тех целей, для которых я хотел применить эту функцию она не подходит? (10) Нет уж, спасибо. Вон до меня здешний одинесник выпивать любил. Такого понаписывал, что уже больше года разгребаю. | |||
| 16
    
        Ёпрст гуру 12.08.13✎ 16:21 | 
        (13)
 угадай, что выведет функция в данном запросе: |Док = Документ.Реализация.ТекущийДокумент; |Количество = Документ.Реализация.Количество; |Функция СуммаКол = Сумма(Количество); |Функция Счётчик = Счётчик(); |Условие (Док = ВыбДок); |Группировка Док; | |||
| 17
    
        Ёпрст гуру 12.08.13✎ 16:22 | 
        (15) ты тоже угадай, что выведет счётчик в этом запросе.     | |||
| 18
    
        Ёпрст гуру 12.08.13✎ 16:22 | 
        угадаешь - поймешь что считает. и при каких условиях.     | |||
| 19
    
        пипец 12.08.13✎ 16:23 | 
        (15) не поверишь , понаписанное полуфинансистом/почтикодером женщиной , не любящей выпивать - уже который год разгребаем ;))     | |||
| 20
    
        akovpashko 12.08.13✎ 16:25 | 
        (16) если Количество - реквизит ТЧ, то Счётчик = количество строк в ВыбДок?     | |||
| 21
    
        пипец 12.08.13✎ 16:26 | 
        (16) ну чоу гадать ? 
 (20) ;'))) | |||
| 22
    
        Ёпрст гуру 12.08.13✎ 16:29 | 
        (20) молодец..
 А так ? |Док = Документ.Реализация.ТекущийДокумент; |Функция Счётчик = Счётчик(); |Условие (Док = ВыбДок); |Группировка Док; | |||
| 23
    
        akovpashko 12.08.13✎ 16:36 | 
        (22) а так Счётчик = 1. Я понял уже, что применил там, где не применяется. Спасибо за подсказки. 
 А как Счётчик работает в запросах по регистрах? Или его туда вообще лучше не совать? | |||
| 24
    
        Ёпрст гуру 12.08.13✎ 16:36 | 
        (23) подсчитывает количество записей , участвующих при расчете функций.     | |||
| 25
    
        akovpashko 12.08.13✎ 16:48 | 
        (24) Ясно, спасибо.
 Тогда никак не могу ысмыслить как так вышло, что 11.08.2013 я списал с регистра 2 товара в количестве, которое было на остатках (то есть полностью), выполнил этот запрос с периодом с 12.08.2013 по 12.08.2013, Счётчик = 2, и в выборку попали оба этих товара но с количествами 0? Движений по регистру в эти дни нету. | |||
| 26
    
        Ёпрст гуру 12.08.13✎ 16:51 | 
        (25) ё...
 при расчете КонОст участвовало 2 записи.. это и показал счётчик. А то что КонОст вернул 0 приэтом - так и должно быть. | |||
| 27
    
        akovpashko 12.08.13✎ 17:03 | 
        (26) это я понимаю. А вот откуда 2 записи и откуда 2 записи с тем же товаром, что и был списан не пойму.
 Ладно, вопрос решен, подзатыльник получен, пояснения получены. Всем спасибо. | |||
| 28
    
        Ёпрст гуру 12.08.13✎ 17:05 | 
        (27) Итоги на ТА или нет смотришь? В зависимости от этого, КонОст считает остаток по одной табличке или по двум..     | |||
| 29
    
        Ёпрст гуру 12.08.13✎ 17:06 | 
        если интересно, чего он там считает - открой запрос в профайлере и гляди. Всё станет более чем понятно     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |