7.7 Помогите новичку

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем дерево, 7 мар 2014.

  1. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Всё равно запись из справочника не удалилась..

    Тоже не совсем понимаю.. Допустим у нас было в справочнике две Продажи Васи Пупкина

    Наименование Книга Количество
    ..... ..... ....
    Пупкин Достоевский 20
    Пупкин Толстой 10

    Процедура ищет сначала по наименованию Пупкина. Есла нашла то смотрит количество. Если то и то совпала удаляет что? Всю строку или как?
    А вот если количество не сошлось тогда (допустим у нас в документе 5 книг), она меняет в строке количество(20-5 =15)??
  2. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    И вот по поводу формы отчета. Там можно выбрать любые элементы, кроме реквизитов. Или отчет создается совсем по другому, не как форма документа?
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Ну вот.. Совсем упустил реквизит книга. Извиняюсь...

    СпрПродКниги.ВыбратьПоРеквизиту("Книга",Книга);
    Пока СпрПродКниги.ПолучитьЭлемент()=1 Цикл
    Если СокрЛП(СпрПродКниги.Наименование)=СокрЛП(СпрПродКниги.Наименование) Тогда
    Прервать();
    КонецЕсли;
    КонецЦикла;
    Если СпрПродКниги.Выбран()=1 Тогда
    Если СпрПродКниги.Количество= Количество Тогда //сравним с количеством в табличной части
    СпрПродКниги.Удалить(1); //непосредственное удаление
    Иначе //уменьшим остаток на количество в документе
    СпрПродКниги.Количество=СпрПродКниги.Количество-Количество;
    СпрПродКниги.Записать()
    КоненцЕсли;
    КонецЕсли;
  4. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Не понимаю смысла строки..
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Свойство 1с - при обращении к объекту возвращает не просто строку, а ПОЛНУЮ строку. Т.е. дополненную пробелами по количеству символов, заданных в конфигураторе.
    Если длина наименования не совпадает строки не совпадут никогда.
    Я просто опечатался... Нужно было

    СокрЛП(СпрПродКниги.Наименование)=СокрЛП(Сотрудник.Наименование)

    СокрЛП - функция убирает пробелы справа и слева.
    дерево нравится это.
  6. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Тогда это уже не нужно получается? Это он будет делать в СокрЛП?
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    НайтиПоНаименованию найдет только ПЕРВЫЙ элемент. Т.е. если у вас несколько элементов СпрПродКниги с одинаковым наименованием, то найдет только первый.
    ВыбратьПоРеквизиту найдет все элементы, удовлетворяющие условию. Смысл вам понятен?
    дерево нравится это.
  8. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Ну вроде понятен. Вот я и говорю. Сначала программа у нас выберет все книги Достоевского, к примеру. А потом уже в операторе Если через фунцию СокрЛП мы проверяем Сотрудника. Как только они совпадают цикл прерывается? Дальше проверяем, если выбран элемент и количество подходит, то удаляем физически(об этом говорит цифра "1")? Я так понял
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Правильно. Пишите код.
    дерево нравится это.
  10. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Уже... Долго не мог запустить.. Пока не изменил Прервать(); на просто Прервать; Не знаю имеет это значение или нет, но программа всё равно не удаляет запись по отмене проведения .. Может я где-то накосячил опять.. Процедура Удаления проведения пишется там же где и процедура проведение?
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    1) скобки имеют значение... Вы пытались вызвать функцию, а не метод
    2) Да. Там же где и проведение
    3) Показывайте что у вас получилось....
    дерево нравится это.
  12. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Нашел.. написал процедура обработкаУдалениеПроведения вместо обработкаУдалениЯПроведения... только сейчас при отмене проведения выдаёт ошибку:
    Поле агрегатного объекта не обнаружено (ВыбратьпоРеквизиту)
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    вместо ВыбратьПоРеквизиту нужно ВыбратьЭлементыПоРеквизиту
    дерево нравится это.
  14. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    процедура обработкаУдаленияПроведения()
    СпрПродМот=СоздатьОбъект("Справочник.ПроданныеКниги");
    СпрПродКниги.ВыбратьЭлементыПоРеквизиту("Книга",Книга);
    Пока СпрПродКниги.ПолучитьЭлемент()=1 Цикл
    Если СокрЛП(СпрПродКниги.Наименование)=СокрЛП(Сотрудник.Наименование) Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если СпрПродКниги.Выбран()=1 Тогда
    Если СпрПродКниги.Количество= Количество Тогда
    СпрПродКниги.Удалить(1);
    Иначе
    СпрПродКниги.Количество=СпрПродКниги.Количество-Количество;
    СпрПродКниги.Записать();
    КоненцЕсли;
    КонецЕсли;
    КонецПроцедуры


    И всё равно не удаляет)))
  15. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    добавил

    СпрПродКниги.Количество=СпрПродКниги.Количество-Количество;
    СпрПродКниги.Записать();
    КоненцЕсли;
    Иначе Сообщить("Не выбран");
    КонецЕсли;

    При отмене выдало, что не выбран
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    а так
    СпрПродКниги=СоздатьОбъект("Справочник.ПроданныеКниги");
    СпрПродКниги.ВыбратьЭлементыПоРеквизиту("Книга",Книга);

    у реквизита книга стоит флаг отбор по реквизиту?
    дерево нравится это.
  17. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Так и написано, это опечатка у меня случайно..

    стоит
  18. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    Флаг стоит сортировка и отбор по реквизиту
  19. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    А где тогда цикл по строкам документа?

    процедура обработкаУдаленияПроведения()
    СпрПродКниги=СоздатьОбъект("Справочник.ПроданныеКниги");
    ВЫБРАТЬСТРОКИ();
    ПОКА ПОЛУЧИТЬСТРОКУ()=1 ЦИКЛ
    СпрПродКниги.ВыбратьЭлементыПоРеквизиту("Книга",Книга);
    Пока СпрПродКниги.ПолучитьЭлемент()=1 Цикл
    Если СокрЛП(СпрПродКниги.Наименование)=СокрЛП(Сотрудник.Наименование) Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если СпрПродКниги.Выбран()=1 Тогда
    Если СпрПродКниги.Количество= Количество Тогда
    СпрПродКниги.Удалить(1);
    Иначе
    СпрПродКниги.Количество=СпрПродКниги.Количество-Количество;
    СпрПродКниги.Записать();
    КоненцЕсли;
    КонецЕсли;
    КОНЕЦЦИКЛА;
    КонецПроцедуры
    дерево нравится это.
  20. TopicStarter Overlay
    дерево
    Offline

    дерево Опытный в 1С

    Регистрация:
    7 мар 2014
    Сообщения:
    60
    Симпатии:
    0
    Баллы:
    26
    О.. заработало, правда не совсем правильно. Если есть два проведеных документа
    Абдулов Достоевский 3
    Абдулов достоевский 12
    То при отмене проведения будет
    Абдулов Достоевский -9
    Абдулов достоевский 12
    Я так понимаю это из-за строчки СпрПродКниги.Количество=СпрПродКниги.Количество-Количество;
    Получается здесь тоже надо цикл, чтобы пробегал строки со значением количества?
    Если СокрЛП(СпрПродКниги.Наименование)=СокрЛП(Сотрудник.Наименование) И СпрПродКниги.Количество= Количество Тогда
    СпрПродКниги.Удалить(1);

    Так можно?
Похожие темы
  1. memphisto
    Ответов:
    1
    Просмотров:
    1.077
Загрузка...

Поделиться этой страницей